in ,

Com emmagatzemar diversos valors de checkbox en una base de dades a Laravel?

Necessito emmagatzemar els valors de les caselles de selecció a la base de dades a Laravel. Com fer ?

Com emmagatzemar diversos valors de checkbox en una base de dades a Laravel?
Com emmagatzemar diversos valors de checkbox en una base de dades a Laravel?

Hi ha diverses maneres d'emmagatzemar els valors de diverses caselles de selecció en una base de dades a Laravel. Aquí hi ha algunes opcions:

  1. Utilitzeu un camp de tipus "booleà". : cada casella de selecció es pot desar com a "vertader" o "fals" en un camp de tipus booleà de la vostra base de dades.
  2. Utilitzeu un camp de tipus "text". : podeu emmagatzemar els valors de totes les caselles de selecció marcades en un camp de tipus de text, separant cada valor amb una coma. Per exemple, si l'usuari ha marcat les caselles "fruites" i "verdures", podeu desar aquesta informació com a "fruites,hortalisses" en un camp de tipus de text.
  3. Utilitzeu una taula de relacions : si teniu diverses caselles de selecció que estan enllaçades al mateix registre, podeu utilitzar una taula de relacions per emmagatzemar aquestes dades. Per exemple, si teniu una taula "productes" amb una columna "categories", podeu crear una taula "categories_productes" que vinculi les categories seleccionades a cada producte.
  4. Utilitzeu un camp de tipus "taula". : Si utilitzeu una base de dades que admet matrius (com PostgreSQL), podeu emmagatzemar els valors de diverses caselles de selecció en un camp de tipus matriu. Això us permetrà emmagatzemar diversos valors en un sol camp sense haver d'utilitzar una taula de relacions.

Emmagatzema diversos valors de casella de selecció en una base de dades mitjançant una matriu

A Laravel, podeu emmagatzemar diversos valors de caselles de verificació en una base de dades mitjançant una matriu per emmagatzemar els valors en un sol camp. Aquí teniu un exemple de com podeu fer-ho:

1. Creeu una migració per afegir un camp a la taula de la vostra base de dades per emmagatzemar els valors de les caselles de selecció. Per exemple, si voleu emmagatzemar els valors en un camp anomenat "opcions", podeu utilitzar la migració següent:

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. Al formulari, creeu caselles de selecció per a cada opció que vulgueu desar. Per exemple :

<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. A la lògica de processament de l'enviament del formulari, recupereu els valors de les caselles de selecció seleccionades i deseu-los a la base de dades. Per exemple :

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

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

Això emmagatzema els valors de les caselles de selecció seleccionades al camp "opcions" com a matriu codificada JSON. A continuació, podeu recuperar i mostrar els valors seleccionats descodificant la matriu JSON quan recupereu el registre de la base de dades.

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

Codis de mostra per emmagatzemar diversos valors de casella de selecció a Laravel

Aquí hi ha alguns codis de mostra per emmagatzemar els valors de diverses caselles de selecció en una base de dades a Laravel:

Utilitzeu un camp de tipus "booleà".

Creació de la columna booleana “subscription_newsletter” a la taula “usuaris”:

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

Registre de la subscripció de l'usuari al butlletí en enviar el formulari:

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

Utilitzeu un camp de tipus "text".

Creació de la columna "options_sélectionées" de tipus de text a la taula "enquesta":

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

Desar les opcions seleccionades per l'usuari en enviar el formulari:

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

Utilitzeu una taula de relacions

Creació de la taula "categories_products" amb les columnes "id_product" i "id_category":

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

Desar les categories seleccionades per l'usuari en enviar el formulari:

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

Utilitzeu un camp de tipus "taula".

Creació de la columna "options_selected" de tipus taula a la taula "poll" (si utilitzeu PostgreSQL):

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

Desar les opcions seleccionades per l'usuari en enviar el formulari:

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

És important tenir en compte que, en qualsevol cas, haureu d'assegurar-vos que els valors de la vostra casella de selecció estiguin correctament validats i desinfectats abans de desar-los a la vostra base de dades. Podeu utilitzar els controladors de validació i els filtres de dades de Laravel per a això.

[Total: 1 Significar: 5]

Escrit per Anton Gildebrand

Anton és un desenvolupador full stack apassionat per compartir consells i solucions de codi amb els seus col·legues i la comunitat de desenvolupadors. Amb una sòlida formació en tecnologies front-end i back-end, Anton és competent en una varietat de llenguatges i marcs de programació. És membre actiu dels fòrums de desenvolupadors en línia i aporta regularment idees i solucions per ajudar els altres a resoldre els reptes de programació. En el seu temps lliure, a Anton li agrada estar al dia de les últimes tendències i tecnologies en el camp i experimentar amb noves eines i marcs.

Deixa un comentari

La seva adreça de correu electrònic no es publicarà. Els camps necessaris estan marcats *

Què et sembla?