in ,

Hoe kinne jo meardere Checkbox-wearden opslaan yn in database yn Laravel?

Ik moat karfakjewearden opslaan yn database yn Laravel. Hoe te dwaan ?

Hoe kinne jo meardere Checkbox-wearden opslaan yn in database yn Laravel?
Hoe kinne jo meardere Checkbox-wearden opslaan yn in database yn Laravel?

D'r binne ferskate manieren om de wearden fan meardere karfakjes op te slaan yn in database yn Laravel. Hjir binne wat opsjes:

  1. Brûk in "boolean" type fjild : elk karfakje kin bewarre wurde as "wier" of "net wier" yn in boolean type fjild yn jo databank.
  2. Brûk in "tekst" type fjild : jo kinne de wearden fan alle kontroleare karfakjes opslaan yn in teksttypefjild, elke wearde skieden mei in komma. Bygelyks, as de brûker de fakjes "fruchten" en "griente" kontrolearre, kinne jo dizze ynformaasje bewarje as "fruchten, grienten" yn in teksttypefjild.
  3. Brûk in relaasje tabel : as jo ferskate karfakjes hawwe dy't keppele binne oan deselde record, kinne jo in relaasjetabel brûke om dizze gegevens op te slaan. As jo ​​​​bygelyks in tabel "produkten" hawwe mei in kolom "kategoryen", kinne jo in tabel "produkt_kategoryen" oanmeitsje dy't de selektearre kategoryen keppele oan elk produkt.
  4. Brûk in "tabel" type fjild : As jo ​​​​in databank brûke dy't arrays stipet (lykas PostgreSQL), kinne jo de wearden fan meardere karfakjes opslaan yn in arraytypefjild. Hjirmei kinne jo meardere wearden opslaan yn ien inkeld fjild sûnder in relaasjetabel te brûken.

Bewarje meardere karfakjewearden yn in database mei in array

Yn Laravel kinne jo meardere karfakjewearden opslaan yn in database troch in array te brûken om de wearden yn ien fjild op te slaan. Hjir is in foarbyld fan hoe't jo it kinne dwaan:

1. Meitsje in migraasje om in fjild ta te foegjen oan jo databanktabel foar it bewarjen fan karfakjewearden. As jo ​​​​bygelyks de wearden wolle opslaan yn in fjild neamd "opsjes", kinne jo de folgjende migraasje brûke:

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. Meitsje yn jo formulier karfakjes foar elke opsje dy't jo bewarje wolle. Bygelyks :

<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. Yn jo logika foar ferwurkjen fan formulier yntsjinje, helje de wearden fan 'e selektearre karfakjes op en bewarje se yn' e database. Bygelyks :

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

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

Dit bewarret de wearden fan 'e selektearre karfakjes yn it "opsjes" fjild as in JSON-kodearre array. Jo kinne dan de selekteare wearden ophelje en werjaan troch de JSON-array te dekodearjen as jo it record fan 'e database ophelje.

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

Sample koades om meardere karfakjeswearden op te slaan yn Laravel

Hjir binne wat foarbyldkoades foar it opslaan fan de wearden fan meardere karfakjes yn in database yn Laravel:

Brûk in "boolean" type fjild

Oanmeitsjen fan de boolean kolom "subscription_newsletter" yn 'e tabel "brûkers":

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

Registraasje fan it abonnemint fan de brûker op de nijsbrief by it yntsjinjen fan it formulier:

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

Brûk in "tekst" type fjild

Oanmeitsjen fan de kolom "options_sélectionées" fan teksttype yn 'e tabel "enkête":

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

Bewarje de opsjes selektearre troch de brûker by it yntsjinjen fan it formulier:

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

Brûk in relaasje tabel

Oanmeitsjen fan 'e tabel "categorys_products" mei de kolommen "id_product" en "id_category":

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

Kategoryen opslaan selektearre troch de brûker by it yntsjinjen fan it formulier:

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

Brûk in "tabel" type fjild

Oanmeitsjen fan de kolom "options_selected" fan tabeltype yn 'e tabel "poll" (as jo PostgreSQL brûke):

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

Bewarje de opsjes selektearre troch de brûker by it yntsjinjen fan it formulier:

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

It is wichtich om te notearjen dat jo yn alle gefallen moatte soargje dat jo wearden fan jo karfakje goed validearre en sanearre binne foardat se wurde opslein yn jo database. Jo kinne de validaasjekontrôles en gegevensfilters fan Laravel brûke foar dit.

[Totaal: 1 Betsjutte: 5]

Skreaun troch Anton Gildebrand

Anton is in folsleine stack-ûntwikkelder mei in passy foar it dielen fan tips en koade-oplossings mei syn kollega's en de ûntwikkeldersmienskip. Mei in solide eftergrûn yn front-end en back-end technologyen, Anton is betûft yn in ferskaat oan programmeartalen en kaders. Hy is in aktyf lid fan online ûntwikkeldersforums en draacht geregeld ideeën en oplossingen by om oaren te helpen by it oplossen fan programmearringsútdagings. Yn syn frije tiid hâldt Anton graach op de hichte fan de lêste trends en technologyen op it mêd en eksperimintearret mei nije ark en kaders.

Leave in reaksje

Jo e-postadres wurdt net publisearre. Ferplichte fjilden binne markearre *

Wat tinksto?

387 punten
Omheech Downvote