Birden fazla onay kutusunun değerlerini Laravel'de bir veritabanında saklamanın birkaç yolu vardır. İşte bazı seçenekler:
- "Boolean" tipi bir alan kullanın : her onay kutusu, veritabanınızdaki bir boole tipi alana "doğru" veya "yanlış" olarak kaydedilebilir.
- Bir "metin" türü alanı kullanın : işaretli tüm onay kutularının değerlerini, her değeri virgülle ayırarak bir metin türü alanında saklayabilirsiniz. Örneğin, kullanıcı "meyveler" ve "sebzeler" kutularını işaretlediyse, bu bilgileri bir metin türü alanına "meyveler,sebzeler" olarak kaydedebilirsiniz.
- Bir ilişki tablosu kullanın : Aynı kayda bağlı birkaç onay kutunuz varsa, bu verileri depolamak için bir ilişki tablosu kullanabilirsiniz. Örneğin, "kategoriler" sütununa sahip bir "ürünler" tablonuz varsa, seçilen kategorileri her bir ürüne bağlayan bir "ürün_kategorisi" tablosu oluşturabilirsiniz.
- Bir "tablo" tipi alan kullanın : Dizileri destekleyen bir veritabanı kullanıyorsanız (PostgreSQL gibi), bir dizi tipi alanında birden fazla onay kutusunun değerlerini saklayabilirsiniz. Bu, bir ilişki tablosu kullanmak zorunda kalmadan birden çok değeri tek bir alanda depolamanıza olanak tanır.
İçindekiler
Bir dizi kullanarak birden fazla onay kutusu değerini bir veritabanında saklayın
Laravel'de, değerleri tek bir alanda saklamak için bir dizi kullanarak birden fazla onay kutusu değerini bir veritabanında saklayabilirsiniz. İşte bunu nasıl yapabileceğinize dair bir örnek:
1. Onay kutusu değerlerini depolamak üzere veritabanı tablonuza bir alan eklemek için bir geçiş oluşturun. Örneğin, "seçenekler" adı verilen bir alanda değerleri depolamak istiyorsanız, aşağıdaki taşımayı kullanabilirsiniz:
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. Formunuzda, kaydetmek istediğiniz her seçenek için onay kutuları oluşturun. Örneğin :
<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. Form gönderme işleme mantığınızda, seçilen onay kutularının değerlerini alın ve bunları veritabanında saklayın. Örneğin :
$options = $request->input('options');
$model = new Model();
$model->options = json_encode($options);
$model->save();
Bu, "seçenekler" alanında seçilen onay kutularının değerlerini JSON kodlu bir dizi olarak saklar. Daha sonra veritabanından kaydı aldığınızda JSON dizisinin kodunu çözerek seçilen değerleri alabilir ve görüntüleyebilirsiniz.
$model = Model::find($id);
$options = json_decode($model->options);
Laravel'de birden fazla onay kutusu değeri depolamak için örnek kodlar
Birden çok onay kutusunun değerlerini Laravel'de bir veritabanında depolamak için bazı örnek kodlar:
"Boolean" tipi bir alan kullanın
“users” tablosunda “subscription_newsletter” boole sütununun oluşturulması:
Schema::table('utilisateurs', function (Blueprint $table) {
$table->boolean('abonnement_newsletter')->default(0);
});
Formu gönderirken kullanıcının bültene aboneliğinin kaydı:
$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();
Bir "metin" türü alanı kullanın
"Anket" tablosunda "options_sélectionées" metin türü sütununun oluşturulması:
Schema::table('sondage', function (Blueprint $table) {
$table->text('options_sélectionnées');
});
Formu gönderirken kullanıcı tarafından seçilen seçeneklerin kaydedilmesi:
$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();
Bir ilişki tablosu kullanın
"id_product" ve "id_category" sütunlarıyla "categories_products" tablosunun oluşturulması:
Schema::create('catégories_produits', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('id_produit');
$table->integer('id_catégorie');
$table->timestamps();
});
Formu gönderirken kullanıcı tarafından seçilen kategorileri kaydetme:
$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();
}
Bir "tablo" tipi alan kullanın
"anket" tablosunda tablo türünde "options_selected" sütununun oluşturulması (PostgreSQL kullanıyorsanız):
Schema::table('sondage', function (Blueprint $table) {
$table->jsonb('options_sélectionnées');
});
Formu gönderirken kullanıcı tarafından seçilen seçeneklerin kaydedilmesi:
$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();
Her durumda, veritabanınıza kaydedilmeden önce onay kutusu değerlerinizin uygun şekilde doğrulandığından ve temizlendiğinden emin olmanız gerekeceğini unutmamak önemlidir. Bunun için Laravel'in doğrulama denetleyicilerini ve veri filtrelerini kullanabilirsiniz.