in ,

Hvordan gemmer man værdierne af flere afkrydsningsfelter i en database i Laravel?

Jeg skal gemme afkrydsningsfeltværdier i databasen i Laravel. Hvordan man gør ?

Hvordan gemmer man værdierne af flere afkrydsningsfelter i en database i Laravel?
Hvordan gemmer man værdierne af flere afkrydsningsfelter i en database i Laravel?

Der er flere måder at gemme værdierne af flere afkrydsningsfelter i en database i Laravel. Her er nogle muligheder:

  1. Brug et felt af typen "boolesk". : hver afkrydsningsboks kan gemmes som "sand" eller "falsk" i et boolesk type felt i din database.
  2. Brug et "tekst"-felt : Du kan gemme værdierne for alle afkrydsningsfelter i et teksttypefelt, der adskiller hver værdi med et komma. For eksempel, hvis brugeren har markeret "frugt" og "grøntsager", kan du gemme disse oplysninger som "frugter, grøntsager" i et teksttypefelt.
  3. Brug en relationstabel : hvis du har flere afkrydsningsfelter, der er knyttet til den samme post, kan du bruge en relationstabel til at gemme disse data. For eksempel, hvis du har en "produkter"-tabel med en "kategorier"-kolonne, kan du oprette en "produktkategorier"-tabel, der linker de valgte kategorier til hvert produkt.
  4. Brug et felt af typen "tabel". : Hvis du bruger en database, der understøtter arrays (som PostgreSQL), kan du gemme værdierne af flere afkrydsningsfelter i et arraytypefelt. Dette giver dig mulighed for at gemme flere værdier i et enkelt felt uden at skulle bruge en relationstabel.

Gem flere afkrydsningsfeltværdier i en database ved hjælp af et array

I Laravel kan du gemme flere afkrydsningsfeltværdier i en database ved at bruge et array til at gemme værdierne i et enkelt felt. Her er et eksempel på, hvordan du kan gøre det:

1. Opret en migrering for at tilføje et felt til din databasetabel for at gemme afkrydsningsfeltværdier. For eksempel, hvis du vil gemme værdierne i et felt kaldet "indstillinger", kan du bruge 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. I din formular skal du oprette afkrydsningsfelter for hver mulighed, du vil gemme. 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. Hent værdierne af de valgte afkrydsningsfelter i din formularindsendelsesbehandlingslogik og gem dem i databasen. For eksempel :

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

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

Dette gemmer værdierne af de valgte afkrydsningsfelter i feltet "indstillinger" som et JSON-kodet array. Du kan derefter hente og vise de valgte værdier ved at afkode JSON-arrayet, når du henter posten fra databasen.

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

Prøvekoder til at gemme flere afkrydsningsfeltværdier i Laravel

Her er nogle eksempler på koder til lagring af værdierne af flere afkrydsningsfelter i en database i Laravel:

Brug et felt af typen "boolesk".

Oprettelse af den booleske kolonne "subscription_newsletter" i "brugere"-tabellen:

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

Registrering af brugerens tilmelding til nyhedsbrevet ved indsendelse af formularen:

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

Brug et "tekst"-felt

Oprettelse af "options_sélectionées"-kolonnen af ​​teksttype i "survey"-tabellen:

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

Gem de valgmuligheder, som brugeren har valgt ved indsendelse af formularen:

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

Brug en relationstabel

Oprettelse af tabellen "categories_products" med kolonnerne "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();
});

Gem kategorier valgt af brugeren ved indsendelse af formularen:

$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();
}

Brug et felt af typen "tabel".

Oprettelse af kolonnen "options_selected" af tabeltypen i tabellen "poll" (hvis du bruger PostgreSQL):

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

Gem de valgmuligheder, som brugeren har valgt ved indsendelse af formularen:

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

Det er vigtigt at bemærke, at du under alle omstændigheder skal sikre, at dine afkrydsningsfeltværdier er korrekt valideret og renset, før de gemmes i din database. Du kan bruge Laravels valideringscontrollere og datafiltre til dette.

[I alt: 1 Betyde: 5]

Skrevet af Anton Gildebrand

Anton er en fuld stack-udvikler med en passion for at dele tips og kodeløsninger med sine kolleger og udviklerfællesskabet. Med en solid baggrund inden for front-end og back-end teknologier er Anton dygtig til en række programmeringssprog og frameworks. Han er et aktivt medlem af online udviklerfora og bidrager regelmæssigt med ideer og løsninger for at hjælpe andre med at løse programmeringsudfordringer. I sin fritid nyder Anton at holde sig opdateret på de nyeste trends og teknologier på området og eksperimentere med nye værktøjer og rammer.

Skriv en kommentar

Din e-mail-adresse vil ikke blive offentliggjort. Påkrævede felter er markeret med *

Hvad mener du?

387 Points
upvote Downvote