Ada beberapa cara untuk menyimpan nilai dari banyak kotak centang dalam database di Laravel. Berikut ini beberapa opsi:
- Gunakan bidang jenis "boolean". : setiap kotak centang dapat disimpan sebagai "true" atau "false" dalam bidang tipe boolean di database Anda.
- Gunakan bidang jenis "teks". : Anda dapat menyimpan nilai semua kotak centang yang dicentang di bidang jenis teks, memisahkan setiap nilai dengan koma. Misalnya, jika pengguna mencentang kotak "buah" dan "sayuran", Anda dapat menyimpan informasi ini sebagai "buah, sayuran" di bidang jenis teks.
- Gunakan tabel relasi : jika Anda memiliki beberapa kotak centang yang ditautkan ke rekaman yang sama, Anda dapat menggunakan tabel relasi untuk menyimpan data ini. Misalnya, jika Anda memiliki tabel "produk" dengan kolom "kategori", Anda dapat membuat tabel "kategori_produk" yang menautkan kategori yang dipilih ke setiap produk.
- Gunakan bidang jenis "tabel". : Jika Anda menggunakan database yang mendukung array (seperti PostgreSQL), Anda dapat menyimpan nilai dari beberapa kotak centang di bidang tipe array. Ini akan memungkinkan Anda untuk menyimpan banyak nilai dalam satu bidang tanpa harus menggunakan tabel hubungan.
Daftar isi
Simpan beberapa nilai kotak centang dalam database menggunakan larik
Di Laravel, Anda dapat menyimpan beberapa nilai kotak centang dalam database dengan menggunakan larik untuk menyimpan nilai dalam satu bidang. Berikut adalah contoh bagaimana Anda dapat melakukannya:
1. Buat migrasi untuk menambahkan bidang ke tabel database Anda untuk menyimpan nilai kotak centang. Misalnya, jika Anda ingin menyimpan nilai dalam bidang yang disebut "opsi", Anda dapat menggunakan migrasi berikut:
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. Di formulir Anda, buat kotak centang untuk setiap opsi yang ingin Anda simpan. Sebagai contoh :
<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. Dalam logika pemrosesan pengiriman formulir Anda, ambil nilai kotak centang yang dipilih dan simpan di database. Sebagai contoh :
$options = $request->input('options');
$model = new Model();
$model->options = json_encode($options);
$model->save();
Ini menyimpan nilai dari kotak centang yang dipilih di bidang "opsi" sebagai larik yang disandikan JSON. Anda kemudian dapat mengambil dan menampilkan nilai yang dipilih dengan mendekode larik JSON saat Anda mengambil catatan dari database.
$model = Model::find($id);
$options = json_decode($model->options);
Contoh kode untuk menyimpan beberapa nilai kotak centang di Laravel
Berikut adalah beberapa contoh kode untuk menyimpan nilai dari beberapa kotak centang dalam database di Laravel:
Gunakan bidang jenis "boolean".
Pembuatan kolom boolean “subscription_newsletter” di tabel “users”:
Schema::table('utilisateurs', function (Blueprint $table) {
$table->boolean('abonnement_newsletter')->default(0);
});
Pendaftaran langganan pengguna ke buletin saat mengirimkan formulir:
$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();
Gunakan bidang jenis "teks".
Pembuatan kolom jenis teks "options_sélectionées" di tabel "survey":
Schema::table('sondage', function (Blueprint $table) {
$table->text('options_sélectionnées');
});
Menyimpan opsi yang dipilih oleh pengguna saat mengirimkan formulir:
$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();
Gunakan tabel relasi
Pembuatan tabel "categories_products" dengan kolom "id_product" dan "id_category":
Schema::create('catégories_produits', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('id_produit');
$table->integer('id_catégorie');
$table->timestamps();
});
Menyimpan kategori yang dipilih oleh pengguna saat mengirimkan 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();
}
Gunakan bidang jenis "tabel".
Pembuatan kolom "options_selected" dari tipe tabel di tabel "poll" (jika Anda menggunakan PostgreSQL):
Schema::table('sondage', function (Blueprint $table) {
$table->jsonb('options_sélectionnées');
});
Menyimpan opsi yang dipilih oleh pengguna saat mengirimkan formulir:
$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();
Penting untuk diperhatikan bahwa, bagaimanapun juga, Anda perlu memastikan bahwa nilai kotak centang Anda telah divalidasi dan dibersihkan dengan benar sebelum disimpan ke database Anda. Anda dapat menggunakan pengontrol validasi Laravel dan filter data untuk ini.