in ,

Como almacenar varios valores de checkbox nunha base de datos en Laravel?

Necesito almacenar os valores das caixas de verificación na base de datos en Laravel. Como facer?

Como almacenar varios valores de checkbox nunha base de datos en Laravel?
Como almacenar varios valores de checkbox nunha base de datos en Laravel?

Hai varias formas de almacenar os valores de varias caixas de verificación nunha base de datos en Laravel. Aquí tes algunhas opcións:

  1. Use un campo de tipo "booleano". : cada caixa de verificación pódese gardar como "verdadeiro" ou "falso" nun campo de tipo booleano da súa base de datos.
  2. Use un campo de tipo "texto". : pode almacenar os valores de todas as caixas de verificación marcadas nun campo de texto, separando cada valor cunha coma. Por exemplo, se o usuario marcou as caixas "froitas" e "verduras", pode gardar esta información como "froitas,verduras" nun campo de texto.
  3. Use unha táboa de relacións : se tes varias caixas de verificación vinculadas ao mesmo rexistro, podes usar unha táboa de relacións para almacenar estes datos. Por exemplo, se tes unha táboa "produtos" cunha columna "categorías", podes crear unha táboa "product_categories" que vincule as categorías seleccionadas con cada produto.
  4. Use un campo de tipo "táboa". : Se está a usar unha base de datos que admite matrices (como PostgreSQL), pode almacenar os valores de varias caixas de verificación nun campo de tipo matriz. Isto permitirache almacenar varios valores nun só campo sen ter que usar unha táboa de relacións.

Almacene varios valores de caixa de verificación nunha base de datos mediante unha matriz

En Laravel, pode almacenar varios valores de caixa de verificación nunha base de datos usando unha matriz para almacenar os valores nun só campo. Aquí tes un exemplo de como podes facelo:

1. Cree unha migración para engadir un campo á súa táboa de base de datos para almacenar os valores das caixas de verificación. Por exemplo, se queres almacenar os valores nun campo chamado "opcións", podes usar a seguinte migración:

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. No seu formulario, cree caixas de verificación para cada opción que quere gardar. Por exemplo :

<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. Na súa lóxica de procesamento de envío de formularios, recupere os valores das caixas de verificación seleccionadas e gárdeos na base de datos. Por exemplo :

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

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

Isto almacena os valores das caixas de verificación seleccionadas no campo "opcións" como unha matriz codificada JSON. A continuación, pode recuperar e mostrar os valores seleccionados descodificando a matriz JSON cando recupere o rexistro da base de datos.

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

Códigos de mostra para almacenar varios valores de caixa de verificación en Laravel

Aquí tes algúns códigos de mostra para almacenar os valores de varias caixas de verificación nunha base de datos en Laravel:

Use un campo de tipo "booleano".

Creación da columna booleana “subscription_newsletter” na táboa “usuarios”:

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

Rexistro da subscrición do usuario ao boletín ao enviar o formulario:

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

Use un campo de tipo "texto".

Creación da columna "options_sélectionées" de tipo de texto na táboa "enquisa":

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

Gardando as opcións seleccionadas polo usuario ao enviar o formulario:

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

Use unha táboa de relacións

Creación da táboa "categorías_produtos" coas columnas "id_product" e "id_category":

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

Gardando as categorías seleccionadas polo usuario ao enviar o formulario:

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

Use un campo de tipo "táboa".

Creación da columna "options_selected" de tipo de táboa na táboa "poll" (se usa PostgreSQL):

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

Gardando as opcións seleccionadas polo usuario ao enviar o formulario:

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

É importante ter en conta que, en calquera caso, terás que asegurarte de que os valores das túas caixas de verificación estean correctamente validados e desinfectados antes de gardarlos na túa base de datos. Podes usar os controladores de validación e filtros de datos de Laravel para iso.

[Total: 1 Media: 5]

escrito por Antón Gildebrand

Anton é un programador full stack apaixonado por compartir consellos e solucións de código cos seus colegas e coa comunidade de desenvolvedores. Cunha sólida formación en tecnoloxías front-end e back-end, Anton é competente nunha variedade de linguaxes e marcos de programación. É membro activo dos foros de desenvolvedores en liña e contribúe regularmente con ideas e solucións para axudar a outros a resolver os desafíos de programación. No seu tempo libre, Anton goza de estar ao día das últimas tendencias e tecnoloxías no campo e experimentar con novas ferramentas e marcos.

Deixe un comentario

O seu enderezo de correo electrónico non se publicará. Os campos obrigatorios están marcados *

¿Que pensas?

387 Puntos
Upvote Downvote