in ,

Laravel ma'lumotlar bazasida bir nechta Checkbox qiymatlarini qanday saqlash mumkin?

Men Laravel ma'lumotlar bazasida tasdiqlash qutisi qiymatlarini saqlashim kerak. Qanday qilish kerak?

Laravel ma'lumotlar bazasida bir nechta Checkbox qiymatlarini qanday saqlash mumkin?
Laravel ma'lumotlar bazasida bir nechta Checkbox qiymatlarini qanday saqlash mumkin?

Laravel ma'lumotlar bazasida bir nechta belgilash katakchalarining qiymatlarini saqlashning bir necha yo'li mavjud. Mana bir nechta variantlar:

  1. "Boolean" turdagi maydondan foydalaning : har bir tasdiqlash qutisi ma'lumotlar bazasidagi mantiqiy turdagi maydonda "to'g'ri" yoki "noto'g'ri" sifatida saqlanishi mumkin.
  2. "Matn" turi maydonidan foydalaning : barcha belgilangan katakchalarning qiymatlarini har bir qiymatni vergul bilan ajratib, matn turi maydonida saqlashingiz mumkin. Masalan, agar foydalanuvchi "mevalar" va "sabzavotlar" katakchalarini belgilagan bo'lsa, siz ushbu ma'lumotni matn turi maydoniga "mevalar, sabzavotlar" sifatida saqlashingiz mumkin.
  3. O'zaro munosabatlar jadvalidan foydalaning : agar sizda bir xil yozuvga bog'langan bir nechta katakchalar mavjud bo'lsa, ushbu ma'lumotlarni saqlash uchun aloqalar jadvalidan foydalanishingiz mumkin. Misol uchun, agar sizda "toifalar" ustuniga ega "mahsulotlar" jadvali bo'lsa, tanlangan toifalarni har bir mahsulotga bog'laydigan "mahsulot_toifalari" jadvalini yaratishingiz mumkin.
  4. "Jadval" turi maydonidan foydalaning : Agar siz massivlarni qo'llab-quvvatlaydigan ma'lumotlar bazasidan foydalanayotgan bo'lsangiz (masalan, PostgreSQL), siz bir nechta belgilash katakchalarining qiymatlarini massiv turi maydonida saqlashingiz mumkin. Bu sizga munosabatlar jadvalidan foydalanmasdan bir nechta qiymatlarni bitta maydonda saqlash imkonini beradi.

Massiv yordamida ma'lumotlar bazasida bir nechta tasdiqlash qutisi qiymatlarini saqlang

Laravel-da siz qiymatlarni bitta maydonda saqlash uchun massivdan foydalanib, ma'lumotlar bazasida bir nechta tasdiqlash qutisi qiymatlarini saqlashingiz mumkin. Buni qanday qilish mumkinligiga misol:

1. Belgilash qutisi qiymatlarini saqlash uchun ma'lumotlar bazasi jadvaliga maydon qo'shish uchun migratsiya yarating. Misol uchun, agar siz qiymatlarni "variantlar" deb nomlangan maydonda saqlamoqchi bo'lsangiz, quyidagi migratsiyadan foydalanishingiz mumkin:

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. Shaklingizda saqlamoqchi bo'lgan har bir variant uchun katakchalarni yarating. Masalan :

<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. Shaklni yuborish mantig'ida tanlangan katakchalarning qiymatlarini oling va ularni ma'lumotlar bazasida saqlang. Masalan :

$options = $request->input('options');

$model = new Model();
$model->options = json_encode($options);
$model->save();

Bu tanlangan katakchalarning qiymatlarini JSON kodlangan massiv sifatida "variantlar" maydonida saqlaydi. Keyin ma'lumotlar bazasidan yozuvni olganingizda JSON massivini dekodlash orqali tanlangan qiymatlarni olishingiz va ko'rsatishingiz mumkin.

$model = Model::find($id);
$options = json_decode($model->options);

Laravelda bir nechta katakcha qiymatlarini saqlash uchun namuna kodlari

Laravel ma'lumotlar bazasida bir nechta tasdiqlash qutilarining qiymatlarini saqlash uchun ba'zi namuna kodlari:

"Boolean" turdagi maydondan foydalaning

“Foydalanuvchilar” jadvalida “obuna_newsletter” mantiqiy ustunini yaratish:

Schema::table('utilisateurs', function (Blueprint $table) {
    $table->boolean('abonnement_newsletter')->default(0);
});

Shaklni yuborishda foydalanuvchining axborot byulleteniga obuna bo'lishini ro'yxatdan o'tkazish:

$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();

"Matn" turi maydonidan foydalaning

"So'rov" jadvalidagi matn turidagi "options_sélectionées" ustunini yaratish:

Schema::table('sondage', function (Blueprint $table) {
    $table->text('options_sélectionnées');
});

Shaklni yuborishda foydalanuvchi tanlagan variantlarni saqlash:

$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();

O'zaro munosabatlar jadvalidan foydalaning

"id_mahsulot" va "id_kategoriya" ustunlari bilan "toifalar_mahsulotlari" jadvalini yaratish:

Schema::create('catégories_produits', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->integer('id_produit');
    $table->integer('id_catégorie');
    $table->timestamps();
});

Shaklni yuborishda foydalanuvchi tanlagan toifalarni saqlash:

$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();
}

"Jadval" turi maydonidan foydalaning

"So'rovnoma" jadvalidagi jadval turidagi "options_selected" ustunini yaratish (agar siz PostgreSQL dan foydalansangiz):

Schema::table('sondage', function (Blueprint $table) {
    $table->jsonb('options_sélectionnées');
});

Shaklni yuborishda foydalanuvchi tanlagan variantlarni saqlash:

$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();

Shuni ta'kidlash kerakki, har qanday holatda, ma'lumotlar bazasiga saqlashdan oldin tasdiqlash qutisi qiymatlari to'g'ri tasdiqlangan va tozalanganligiga ishonch hosil qilishingiz kerak. Buning uchun Laravelning tekshirish kontrollerlari va ma'lumotlar filtrlaridan foydalanishingiz mumkin.

[Jami: 1 Anglatadi: 5]

Tomonidan yozilgan Anton Gildebrand

Anton o'z hamkasblari va dasturchilar hamjamiyatiga kodlar bo'yicha maslahatlar va yechimlarni baham ko'rishni yaxshi ko'radigan to'liq stek ishlab chiqaruvchisi. Front-end va back-end texnologiyalari bo'yicha yaxshi ma'lumotga ega bo'lgan Anton turli dasturlash tillari va ramkalarini yaxshi biladi. U onlayn dasturchilar forumlarining faol a'zosi bo'lib, boshqalarga dasturlash muammolarini hal qilishda yordam berish uchun muntazam ravishda g'oyalar va yechimlar taklif qiladi. Bo'sh vaqtida Anton sohadagi so'nggi tendentsiyalar va texnologiyalardan xabardor bo'lishni, yangi vositalar va ramkalar bilan tajriba o'tkazishni yoqtiradi.

Izoh qoldirish

Sizning elektron pochta manzilingiz e'lon qilinmaydi. Kerakli joylar belgilangan *

Siz nima deb o'ylaysiz?