in ,

Nola gorde hainbat Checkbox balio datu-base batean Laravel-en?

Laravel-en datu-basean kontrol-laukiaren balioak gorde behar ditut. Nola egin ?

Nola gorde hainbat Checkbox balio datu-base batean Laravel-en?
Nola gorde hainbat Checkbox balio datu-base batean Laravel-en?

Laravel-en datu-base batean kontrol-lauki anitzen balioak gordetzeko hainbat modu daude. Hona hemen aukera batzuk:

  1. Erabili "boolear" motako eremu bat : kontrol-lauki bakoitza "egia" edo "gezurra" gisa gorde daiteke zure datu-baseko boolear motako eremu batean.
  2. Erabili "testu" motako eremua : markatutako kontrol-lauki guztien balioak testu motako eremu batean gorde ditzakezu, balio bakoitza koma batekin bereiziz. Adibidez, erabiltzaileak "frutak" eta "barazkiak" koadroak markatu baditu, informazio hori "frutak, barazkiak" gisa gorde dezakezu testu motako eremu batean.
  3. Erabili harreman-taula : erregistro berari lotuta dauden hainbat kontrol-lauki badituzu, erlazio-taula bat erabil dezakezu datu hauek gordetzeko. Adibidez, "produktuak" taula bat baduzu "kategoriak" zutabearekin, hautatutako kategoriak produktu bakoitzarekin lotzen dituen "product_categories" taula bat sor dezakezu.
  4. Erabili "taula" motako eremua : Matrizeak onartzen dituen datu-base bat erabiltzen ari bazara (PostgreSQL adibidez), kontrol-lauki anitzen balioak gorde ditzakezu matrize motako eremu batean. Horrek balio anitz eremu bakar batean gordetzeko aukera emango dizu erlazio-taularik erabili behar izan gabe.

Gorde hainbat kontrol-laukiaren balio datu-base batean array bat erabiliz

Laravel-en, datu-base batean hainbat kontrol-lauki-balio gorde ditzakezu array bat erabiliz balioak eremu bakar batean gordetzeko. Hona hemen nola egin dezakezun adibide bat:

1. Sortu migrazio bat zure datu-baseko taulan eremu bat gehitzeko kontrol-laukiaren balioak gordetzeko. Adibidez, balioak "aukerak" izeneko eremu batean gorde nahi badituzu, honako migrazio hau erabil dezakezu:

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. Zure inprimakian, sortu kontrol-laukiak gorde nahi duzun aukera bakoitzarentzat. Adibidez :

<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. Zure inprimakiak bidaltzeko prozesatzeko logikan, berreskuratu hautatutako kontrol-laukien balioak eta gorde datu-basean. Adibidez :

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

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

Honek "aukerak" eremuan hautatutako kontrol-laukien balioak gordetzen ditu JSON kodetutako array gisa. Ondoren, hautatutako balioak berreskuratu eta bistaratu ditzakezu JSON array deskodetuz erregistroa datu-basetik ateratzen duzunean.

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

Lagin-kodeak Laravel-en hainbat kontrol-lauki-balio gordetzeko

Hona hemen Laravel-en datu-base batean kontrol-lauki anitzen balioak gordetzeko adibide-kode batzuk:

Erabili "boolear" motako eremu bat

“Harpidetza_buletina” zutabe boolearra sortzea “erabiltzaileak” taulan:

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

Erabiltzaileak buletinerako harpidetza erregistratzea formularioa bidaltzean:

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

Erabili "testu" motako eremua

Testu motako "options_sélectionées" zutabea sortzea "inkesta" taulan:

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

Inprimakia bidaltzean erabiltzaileak aukeratutako aukerak gordetzea:

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

Erabili harreman-taula

"Categories_products" taula sortzea "id_product" eta "id_category" zutabeekin:

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

Inprimakia bidaltzean erabiltzaileak hautatutako kategoriak gordetzea:

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

Erabili "taula" motako eremua

Taula motako "options_selected" zutabea sortzea "poll" taulan (PostgreSQL erabiltzen baduzu):

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

Inprimakia bidaltzean erabiltzaileak aukeratutako aukerak gordetzea:

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

Garrantzitsua da kontuan izan, edozein kasutan, zure datu-basean gorde aurretik zure kontrol-laukiaren balioak behar bezala balioztatu eta garbitzen direla ziurtatu beharko duzula. Laravel-en baliozkotze-kontrolatzaileak eta datu-iragazkiak erabil ditzakezu horretarako.

[Guztira: 1 Esan nahia: 5]

k idatzia Anton Gildebrand

Anton bere lankideekin eta garatzaileen komunitatearekin kode-aholkuak eta konponbideak partekatzeko grina duen garatzaile osoa da. Front-end eta back-end teknologietan aurrekari sendoak dituena, Anton trebea da hainbat programazio-lengoaia eta esparrutan. Lineako garatzaileen foroetako kide aktiboa da eta aldizka ideiak eta irtenbideak ematen ditu besteei programazio-erronkak konpontzen laguntzeko. Bere aisialdian, Antonek arloko azken joeren eta teknologien eguneratuta egotea eta tresna eta esparru berriekin esperimentatzen du.

Iruzkin bat idatzi

Zure helbide elektronikoa ez da argitaratuko. Beharrezko eremuak markatuta daude *

Zer deritzozu?

387 Puntuak
Bozkatu Downvote