in ,

Wéi späichere mir verschidde Checkbox Wäerter an enger Datebank zu Laravel?

Ech muss Checkbox Wäerter an der Datebank zu Laravel späicheren. Wéi maachen?

Wéi späichere mir verschidde Checkbox Wäerter an enger Datebank zu Laravel?
Wéi späichere mir verschidde Checkbox Wäerter an enger Datebank zu Laravel?

Et gi verschidde Weeër fir d'Wäerter vu multiple Checkboxen an enger Datebank zu Laravel ze späicheren. Hei sinn e puer Optiounen:

  1. Benotzt e "boolesche" Typ Feld : all Checkbox kann als "richteg" oder "falsch" an engem booleschen Typ Feld an Ärer Datebank gespäichert ginn.
  2. Benotzt en "Text" Typ Feld : Dir kënnt d'Wäerter vun alle kontrolléierte Checkboxen an engem Texttypfeld späicheren, all Wäert mat engem Komma trennen. Zum Beispill, wann de Benotzer d'Këschte "Uebst" a "Geméis" kontrolléiert huet, kënnt Dir dës Informatioun als "Uebst, Geméis" an engem Texttypfeld späicheren.
  3. Benotzt eng Relatioun Dësch : Wann Dir e puer Checkboxen hutt, déi mat deemselwechte Rekord verbonne sinn, kënnt Dir eng Bezéiungstabell benotzen fir dës Donnéeën ze späicheren. Zum Beispill, wann Dir eng "Produkter" Tabell mat enger "Kategorien" Kolonn hutt, kënnt Dir eng "product_categories" Tabelle erstellen, déi déi ausgewielte Kategorien un all Produkt verbënnt.
  4. Benotzt en "Table" Typ Feld : Wann Dir eng Datebank benotzt déi Arrays ënnerstëtzt (wéi PostgreSQL), kënnt Dir d'Wäerter vu multiple Checkboxen an engem Array-Typ Feld späicheren. Dëst erlaabt Iech verschidde Wäerter an engem eenzege Feld ze späicheren ouni eng Bezéiungstabell ze benotzen.

Späichere verschidde Checkbox Wäerter an enger Datebank mat engem Array

A Laravel kënnt Dir verschidde Checkbox Wäerter an enger Datebank späicheren andeems Dir eng Array benotzt fir d'Wäerter an engem eenzege Feld ze späicheren. Hei ass e Beispill vu wéi Dir et maache kënnt:

1. Erstellt eng Migratioun fir e Feld op Är Datebank Tabelle fir d'Checkbox Wäerter ze späicheren. Zum Beispill, wann Dir d'Wäerter an engem Feld "Optiounen" späichere wëllt, kënnt Dir déi folgend Migratioun benotzen:

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. An Ärer Form, erstellt Checkboxen fir all Optioun déi Dir späichere wëllt. Zum Beispill :

<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. An Ärer Form Soumissioun Veraarbechtung Logik, recuperéieren d'Wäerter vun de gewielte Checkboxen a späichert se an der Datebank. Zum Beispill :

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

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

Dëst späichert d'Wäerter vun de gewielte Checkboxen am Feld "Optiounen" als JSON-kodéiert Array. Dir kënnt dann déi gewielte Wäerter recuperéieren an weisen andeems Dir de JSON-Array decodéiert wann Dir de Rekord aus der Datebank zréckhëlt.

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

Probe Coden fir verschidde Checkbox Wäerter am Laravel ze späicheren

Hei sinn e puer Beispiller Coden fir d'Wäerter vu multiple Checkboxen an enger Datebank zu Laravel ze späicheren:

Benotzt e "boolesche" Typ Feld

Kreatioun vun der "subscription_newsletter" boolesch Kolonn an der "Benotzer" Dësch:

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

Aschreiwung vum Benotzer Abonnement op den Newsletter wann Dir de Formulaire ofgitt:

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

Benotzt en "Text" Typ Feld

Schafung vun der Kolonn "options_sélectionées" vum Texttyp an der Tabell "Ëmfro":

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

Spuert d'Optiounen, déi vum Benotzer gewielt goufen beim Ofschécken vum Formulaire:

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

Benotzt eng Relatioun Dësch

Schafung vun der Tabell "categories_products" mat de Kolonnen "id_product" an "id_category":

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

Spuert d'Kategorien, déi vum Benotzer gewielt goufen beim Ofschécken vum Formulaire:

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

Benotzt en "Table" Typ Feld

Schafung vun der Kolonn "options_selected" vum Dëschtyp an der Tabell "Poll" (wann Dir PostgreSQL benotzt):

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

Spuert d'Optiounen, déi vum Benotzer gewielt goufen beim Ofschécken vum Formulaire:

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

Et ass wichteg ze bemierken datt Dir op alle Fall musst suergen datt Är Checkbox Wäerter richteg validéiert a gebotzt ginn ier Dir an Ärer Datebank gespäichert gëtt. Dir kënnt dem Laravel seng Validatiounscontroller an Datefilter fir dëst benotzen.

[Insgesamt: 1 heescht: 5]

schrëftlech vun Anton Gildebrand

Den Anton ass e Full-Stack Entwéckler passionéierte fir Code Tipps a Léisunge mat senge Kollegen an der Entwécklergemeinschaft ze deelen. Mat engem zolitten Hannergrond a Front-End- a Back-End Technologien ass den Anton beherrscht a ville Programméierungssproochen a Kaderen. Hien ass en aktive Member vun Online Entwéckler Foren a dréit reegelméisseg Iddien a Léisunge bäi fir anerer ze hëllefen d'Programméierungserausfuerderungen ze léisen. A senger Fräizäit genéisst den Anton sech um neisten Trends an Technologien am Beräich um Lafenden ze bleiwen an mat neien Tools a Kaderen ze experimentéieren.

Hannerlooss eng Bemierkung

Är E-Mail Adress gëtt net verëffentlecht. Néideg Felder sinn markéiert *

Wat denks du?

387 Punkten
Upvote Downvote