in ,

Laravel'de bir veritabanında birden fazla Checkbox değeri nasıl saklanır?

Onay kutusu değerlerini Laravel'deki veritabanında saklamam gerekiyor. Nasıl yapılır ?

Laravel'de bir veritabanında birden fazla Checkbox değeri nasıl saklanır?
Laravel'de bir veritabanında birden fazla Checkbox değeri nasıl saklanır?

Birden fazla onay kutusunun değerlerini Laravel'de bir veritabanında saklamanın birkaç yolu vardır. İşte bazı seçenekler:

  1. "Boolean" tipi bir alan kullanın : her onay kutusu, veritabanınızdaki bir boole tipi alana "doğru" veya "yanlış" olarak kaydedilebilir.
  2. 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.
  3. 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.
  4. 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.

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.

[Toplam: 1 Anlamına gelmek: 5]

Tarafından yazılmıştır Anton Gildebrand

Anton, iş arkadaşları ve geliştirici topluluğuyla kod ipuçlarını ve çözümlerini paylaşma konusunda tutkulu, eksiksiz bir geliştiricidir. Ön uç ve arka uç teknolojilerinde sağlam bir geçmişe sahip olan Anton, çeşitli programlama dilleri ve çerçevelerinde uzmandır. Çevrimiçi geliştirici forumlarının aktif bir üyesidir ve başkalarının programlama zorluklarını çözmesine yardımcı olmak için düzenli olarak fikir ve çözümlerle katkıda bulunur. Anton, boş zamanlarında alandaki en son trendler ve teknolojiler hakkında güncel bilgilere sahip olmaktan ve yeni araç ve çerçevelerle deneyler yapmaktan keyif alıyor.

YORUM BIRAKIN

E-posta hesabınız yayımlanmayacak. Doldurulması zorunlu alanlar * ile işaretlenmiştir *

Sizce?

387 Puanlar
Oyla downvote