Aya sababaraha cara pikeun nyimpen nilai sababaraha kotak centang dina database di Laravel. Ieu sababaraha pilihan:
- Paké widang tipe "boolean". : unggal kotak centang bisa disimpen salaku "leres" atawa "palsu" dina widang tipe boolean dina database Anjeun.
- Paké widang tipe "téks". : anjeun tiasa nyimpen nilai sadaya kotak centang dina widang tipe téks, misahkeun unggal nilai ku koma. Salaku conto, upami pangguna mariksa kotak "buah" sareng "sayur", anjeun tiasa nyimpen inpormasi ieu salaku "buah, sayuran" dina widang jinis téks.
- Paké tabel hubungan : Upami Anjeun gaduh sababaraha kotak centang nu numbu ka catetan sarua, Anjeun tiasa make tabel hubungan pikeun nyimpen data ieu. Contona, upami anjeun gaduh tabel "produk" sareng kolom "kategori", anjeun tiasa ngadamel tabel "product_categories" anu ngaitkeun kategori anu dipilih ka unggal produk.
- Paké widang tipe "tabel". : Upami anjeun nganggo database anu ngadukung arrays (sapertos PostgreSQL), anjeun tiasa nyimpen nilai tina sababaraha kotak centang dina widang tipe array. Ieu bakal ngidinan Anjeun pikeun nyimpen sababaraha nilai dina widang tunggal tanpa kudu make tabel hubungan.
Daptar eusi
Nyimpen sababaraha nilai kotak centang dina pangkalan data nganggo array
Dina Laravel, anjeun tiasa nyimpen sababaraha nilai kotak centang dina pangkalan data ku ngagunakeun susunan pikeun nyimpen nilai dina hiji widang. Ieu conto kumaha anjeun tiasa ngalakukeunana:
1. Jieun migrasi pikeun nambahkeun widang ka tabel database anjeun pikeun nyimpen nilai centang. Contona, upami anjeun hoyong nyimpen nilai dina widang disebut "pilihan", anjeun tiasa nganggo migrasi handap:
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. Dina formulir Anjeun, jieun kotak centang pikeun tiap pilihan nu Anjeun hoyong simpen. Contona :
<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. Dina logika pamrosésan formulir kiriman anjeun, kéngingkeun nilai kotak centang anu dipilih sareng simpen dina pangkalan data. Contona :
$options = $request->input('options');
$model = new Model();
$model->options = json_encode($options);
$model->save();
Ieu nyimpen nilai tina kotak centang nu dipilih dina widang "pilihan" salaku susunan JSON disandikeun. Anjeun teras tiasa nyandak sareng ningalikeun nilai-nilai anu dipilih ku ngadekodekeun susunan JSON nalika anjeun nyandak catetan tina pangkalan data.
$model = Model::find($id);
$options = json_decode($model->options);
Sampel kode pikeun nyimpen sababaraha nilai kotak centang dina Laravel
Ieu sababaraha kode sampel pikeun nyimpen nilai sababaraha kotak centang dina database di Laravel:
Paké widang tipe "boolean".
Nyiptakeun kolom boolean "subscription_newsletter" dina tabel "pamaké":
Schema::table('utilisateurs', function (Blueprint $table) {
$table->boolean('abonnement_newsletter')->default(0);
});
Pendaptaran langganan pangguna kana buletin nalika ngirimkeun formulir:
$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();
Paké widang tipe "téks".
Nyiptakeun kolom "options_séléctionées" jinis téks dina tabel "survey":
Schema::table('sondage', function (Blueprint $table) {
$table->text('options_sélectionnées');
});
Nyimpen pilihan anu dipilih ku pangguna nalika ngirimkeun formulir:
$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();
Paké tabel hubungan
Nyiptakeun tabel "categories_products" kalayan kolom "id_product" sareng "id_category":
Schema::create('catégories_produits', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('id_produit');
$table->integer('id_catégorie');
$table->timestamps();
});
Nyimpen kategori anu dipilih ku pangguna nalika ngirimkeun formulir:
$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();
}
Paké widang tipe "tabel".
Nyiptakeun kolom "options_selected" tina jinis Asép Sunandar Sunarya dina tabel "polling" (upami anjeun nganggo PostgreSQL):
Schema::table('sondage', function (Blueprint $table) {
$table->jsonb('options_sélectionnées');
});
Nyimpen pilihan anu dipilih ku pangguna nalika ngirimkeun formulir:
$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();
Penting pikeun dicatet yén, dina hal naon waé, anjeun kedah mastikeun yén nilai kotak centang anjeun leres disahkeun sareng disanitisasi sateuacan disimpen kana pangkalan data anjeun. Anjeun tiasa nganggo pengendali validasi Laravel sareng saringan data pikeun ieu.