Hay varias formas de almacenar los valores de varias casillas de verificación en una base de datos en Laravel. Aquí hay algunas opciones:
- Utilice un campo de tipo "booleano" : cada casilla de verificación se puede guardar como "verdadero" o "falso" en un campo de tipo booleano en su base de datos.
- Utilice un campo de tipo "texto" : puede almacenar los valores de todas las casillas marcadas en un campo de tipo texto, separando cada valor con una coma. Por ejemplo, si el usuario marcó las casillas "frutas" y "verduras", puede guardar esta información como "frutas, verduras" en un campo de tipo texto.
- Usar una tabla de relaciones : si tiene varias casillas de verificación que están vinculadas al mismo registro, puede usar una tabla de relaciones para almacenar estos datos. Por ejemplo, si tiene una tabla de "productos" con una columna de "categorías", puede crear una tabla de "categorías_producto" que vincule las categorías seleccionadas a cada producto.
- Utilice un campo de tipo "tabla" : si está utilizando una base de datos que admite matrices (como PostgreSQL), puede almacenar los valores de varias casillas de verificación en un campo de tipo matriz. Esto le permitirá almacenar múltiples valores en un solo campo sin tener que usar una tabla de relaciones.
Indice
Almacene múltiples valores de casilla de verificación en una base de datos usando una matriz
En Laravel, puede almacenar múltiples valores de casilla de verificación en una base de datos utilizando una matriz para almacenar los valores en un solo campo. Aquí tienes un ejemplo de cómo puedes hacerlo:
1. Cree una migración para agregar un campo a la tabla de su base de datos para almacenar los valores de las casillas de verificación. Por ejemplo, si desea almacenar los valores en un campo llamado "opciones", puede utilizar la siguiente 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. En su formulario, cree casillas de verificación para cada opción que desee guardar. Por ejemplo :
<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. En la lógica de procesamiento de envío de su formulario, recupere los valores de las casillas de verificación seleccionadas y guárdelos en la base de datos. Por ejemplo :
$options = $request->input('options');
$model = new Model();
$model->options = json_encode($options);
$model->save();
Esto almacena los valores de las casillas de verificación seleccionadas en el campo "opciones" como una matriz codificada en JSON. Luego puede recuperar y mostrar los valores seleccionados decodificando la matriz JSON cuando recupera el registro de la base de datos.
$model = Model::find($id);
$options = json_decode($model->options);
Códigos de muestra para almacenar múltiples valores de checkbox en Laravel
Aquí hay algunos códigos de muestra para almacenar los valores de varias casillas de verificación en una base de datos en Laravel:
Utilice un campo de tipo "booleano"
Creación de la columna booleana “subscription_newsletter” en la tabla “users”:
Schema::table('utilisateurs', function (Blueprint $table) {
$table->boolean('abonnement_newsletter')->default(0);
});
Registro de la suscripción del usuario a la newsletter al enviar el formulario:
$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();
Utilice un campo de tipo "texto"
Creación de la columna "options_sélectionées" de tipo texto en la tabla "encuesta":
Schema::table('sondage', function (Blueprint $table) {
$table->text('options_sélectionnées');
});
Guardando las opciones seleccionadas por el usuario al enviar el formulario:
$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();
Usar una tabla de relaciones
Creación de la tabla "categories_products" con las columnas "id_product" y "id_category":
Schema::create('catégories_produits', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('id_produit');
$table->integer('id_catégorie');
$table->timestamps();
});
Guardar categorías seleccionadas por el usuario al enviar el 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();
}
Utilice un campo de tipo "tabla"
Creación de la columna "options_selected" de tipo tabla en la tabla "poll" (si usas PostgreSQL):
Schema::table('sondage', function (Blueprint $table) {
$table->jsonb('options_sélectionnées');
});
Guardando las opciones seleccionadas por el usuario al enviar el formulario:
$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();
Es importante tener en cuenta que, en cualquier caso, deberá asegurarse de que los valores de su casilla de verificación se validen y limpien correctamente antes de guardarlos en su base de datos. Puede usar los controladores de validación y los filtros de datos de Laravel para esto.