in ,

Hvordan lagre flere avkrysningsboksverdier i en database i Laravel?

Jeg må lagre avkrysningsboksverdier i databasen i Laravel. Hvordan gjøre?

Hvordan lagre flere avkrysningsboksverdier i en database i Laravel?
Hvordan lagre flere avkrysningsboksverdier i en database i Laravel?

Det er flere måter å lagre verdiene til flere avmerkingsbokser i en database i Laravel. Her er noen alternativer:

  1. Bruk et "boolsk" felt : hver avmerkingsboks kan lagres som "true" eller "false" i et boolesk typefelt i databasen din.
  2. Bruk et "tekst"-felt : du kan lagre verdiene for alle avmerkede avmerkingsbokser i et teksttypefelt, og skille hver verdi med et komma. For eksempel, hvis brukeren har merket av for "frukt" og "grønnsaker", kan du lagre denne informasjonen som "frukt, grønnsaker" i et teksttypefelt.
  3. Bruk en relasjonstabell : hvis du har flere avmerkingsbokser som er koblet til samme post, kan du bruke en relasjonstabell for å lagre disse dataene. Hvis du for eksempel har en "produkter"-tabell med en "kategorier"-kolonne, kan du opprette en "produktkategorier"-tabell som kobler de valgte kategoriene til hvert produkt.
  4. Bruk et "tabell"-felt : Hvis du bruker en database som støtter matriser (som PostgreSQL), kan du lagre verdiene til flere avmerkingsbokser i et matrisetypefelt. Dette vil tillate deg å lagre flere verdier i et enkelt felt uten å måtte bruke en relasjonstabell.

Lagre flere avkrysningsboksverdier i en database ved hjelp av en matrise

I Laravel kan du lagre flere avkrysningsboksverdier i en database ved å bruke en matrise for å lagre verdiene i et enkelt felt. Her er et eksempel på hvordan du kan gjøre det:

1. Opprett en migrering for å legge til et felt i databasetabellen for å lagre avkrysningsboksverdier. For eksempel, hvis du vil lagre verdiene i et felt kalt "alternativer", kan du bruke følgende migrering:

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AddOptionsToTableName extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('table_name', function (Blueprint $table) {
            $table->text('options')->nullable();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('table_name', function (Blueprint $table) {
            $table->dropColumn('options');
        });
    }
}

2. Lag avmerkingsbokser i skjemaet for hvert alternativ du vil lagre. For eksempel :

<input type="checkbox" name="options[]" value="option1"> Option 1
<input type="checkbox" name="options[]" value="option2"> Option 2
<input type="checkbox" name="options[]" value="option3"> Option 3

3. I skjemainnsendingsbehandlingslogikken henter du verdiene til de valgte avmerkingsboksene og lagrer dem i databasen. For eksempel :

$options = $request->input('options');

$model = new Model();
$model->options = json_encode($options);
$model->save();

Dette lagrer verdiene til de valgte avmerkingsboksene i "alternativer"-feltet som en JSON-kodet matrise. Du kan deretter hente og vise de valgte verdiene ved å dekode JSON-matrisen når du henter posten fra databasen.

$model = Model::find($id);
$options = json_decode($model->options);

Eksempelkoder for å lagre flere avkrysningsboksverdier i Laravel

Her er noen eksempelkoder for å lagre verdiene til flere avmerkingsbokser i en database i Laravel:

Bruk et "boolsk" felt

Oppretting av den boolske kolonnen «subscription_newsletter» i «brukere»-tabellen:

Schema::table('utilisateurs', function (Blueprint $table) {
    $table->boolean('abonnement_newsletter')->default(0);
});

Registrering av brukers abonnement på nyhetsbrev ved innsending av skjema:

$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();

Bruk et "tekst"-felt

Oppretting av "options_sélectionées"-kolonnen med teksttype i "survey"-tabellen:

Schema::table('sondage', function (Blueprint $table) {
    $table->text('options_sélectionnées');
});

Lagre alternativene som er valgt av brukeren ved innsending av skjemaet:

$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();

Bruk en relasjonstabell

Oppretting av tabellen "categories_products" med kolonnene "id_product" og "id_category":

Schema::create('catégories_produits', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->integer('id_produit');
    $table->integer('id_catégorie');
    $table->timestamps();
});

Lagre kategorier valgt av brukeren ved innsending av skjemaet:

$produit = new Produit;
$produit->save();

foreach ($request->input('catégories') as $catégorie) {
    $catégorie_produit = new CatégorieProduit;
    $catégorie_produit->id_produit = $produit->id;
    $catégorie_produit->id_catégorie = $catégorie;
    $catégorie_produit->save();
}

Bruk et "tabell"-felt

Oppretting av kolonnen "options_selected" av tabelltype i tabellen "poll" (hvis du bruker PostgreSQL):

Schema::table('sondage', function (Blueprint $table) {
    $table->jsonb('options_sélectionnées');
});

Lagre alternativene som er valgt av brukeren ved innsending av skjemaet:

$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();

Det er viktig å merke seg at du uansett må sørge for at avkrysningsboksverdiene dine er riktig validert og renset før de lagres i databasen din. Du kan bruke Laravels valideringskontrollere og datafiltre til dette.

[Total: 1 Mener: 5]

Written by Anton Gildebrand

Anton er en fullstack-utvikler som er lidenskapelig opptatt av å dele kodetips og løsninger med sine kolleger og utviklerfellesskapet. Med en solid bakgrunn innen front-end og back-end teknologier, er Anton dyktig i en rekke programmeringsspråk og rammeverk. Han er et aktivt medlem av nettbaserte utviklerfora og bidrar jevnlig med ideer og løsninger for å hjelpe andre med å løse programmeringsutfordringer. På fritiden liker Anton å holde seg oppdatert på de siste trendene og teknologiene på feltet og eksperimentere med nye verktøy og rammeverk.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket *

Hva tror du?

387 Poeng
Upvote Downvote