in ,

چگونه چندین مقدار Checkbox را در یک پایگاه داده در لاراول ذخیره کنیم؟

من باید مقادیر چک باکس را در پایگاه داده در لاراول ذخیره کنم. چطور انجام دادن ؟

چگونه چندین مقدار Checkbox را در یک پایگاه داده در لاراول ذخیره کنیم؟
چگونه چندین مقدار Checkbox را در یک پایگاه داده در لاراول ذخیره کنیم؟

راه های مختلفی برای ذخیره مقادیر چک باکس های متعدد در پایگاه داده در لاراول وجود دارد. در اینجا چند گزینه وجود دارد:

  1. از یک فیلد نوع "بولی" استفاده کنید : هر چک باکس را می توان به عنوان "درست" یا "نادرست" در یک فیلد نوع بولی در پایگاه داده شما ذخیره کرد.
  2. از یک فیلد نوع "متن" استفاده کنید : می توانید مقادیر تمام چک باکس های علامت زده را در یک فیلد نوع متن ذخیره کنید و هر مقدار را با کاما جدا کنید. برای مثال، اگر کاربر کادرهای «میوه‌ها» و «سبزیجات» را علامت زده باشد، می‌توانید این اطلاعات را به‌عنوان «میوه، سبزیجات» در فیلد نوع متن ذخیره کنید.
  3. از جدول رابطه استفاده کنید : اگر چندین چک باکس دارید که به یک رکورد مرتبط هستند، می توانید از جدول رابطه برای ذخیره این داده ها استفاده کنید. به عنوان مثال، اگر یک جدول «محصولات» با ستون «دسته‌ها» دارید، می‌توانید جدول «دسته‌های_product» ایجاد کنید که دسته‌های انتخاب‌شده را به هر محصول پیوند می‌دهد.
  4. از یک فیلد نوع "جدول" استفاده کنید : اگر از پایگاه داده ای استفاده می کنید که از آرایه ها پشتیبانی می کند (مانند PostgreSQL)، می توانید مقادیر چند چک باکس را در یک فیلد نوع آرایه ذخیره کنید. این به شما امکان می دهد چندین مقدار را در یک فیلد واحد بدون نیاز به استفاده از جدول رابطه ذخیره کنید.

مقادیر چند چک باکس را با استفاده از یک آرایه در یک پایگاه داده ذخیره کنید

در لاراول، می توانید چندین مقدار چک باکس را با استفاده از یک آرایه برای ذخیره مقادیر در یک فیلد ذخیره کنید. در اینجا مثالی از نحوه انجام این کار آورده شده است:

1. یک مهاجرت برای اضافه کردن فیلدی به جدول پایگاه داده خود برای ذخیره مقادیر چک باکس ایجاد کنید. به عنوان مثال، اگر می خواهید مقادیر را در فیلدی به نام "options" ذخیره کنید، می توانید از مهاجرت زیر استفاده کنید:

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. در فرم خود، برای هر گزینه ای که می خواهید ذخیره کنید، چک باکس ایجاد کنید. مثلا :

<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. در منطق پردازش ارسال فرم، مقادیر چک باکس های انتخاب شده را بازیابی کرده و در پایگاه داده ذخیره کنید. مثلا :

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

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

این مقادیر چک باکس های انتخاب شده را در قسمت "گزینه ها" به عنوان یک آرایه رمزگذاری شده JSON ذخیره می کند. سپس می توانید مقادیر انتخاب شده را با رمزگشایی آرایه JSON هنگام بازیابی رکورد از پایگاه داده بازیابی و نمایش دهید.

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

نمونه کدهایی برای ذخیره چندین مقدار چک باکس در لاراول

در اینجا چند کد نمونه برای ذخیره مقادیر چک باکس های متعدد در یک پایگاه داده در لاراول آورده شده است:

از یک فیلد نوع "بولی" استفاده کنید

ایجاد ستون بولی «subscription_newsletter» در جدول «کاربران»:

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

ثبت اشتراک کاربر در خبرنامه هنگام ارسال فرم:

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

از یک فیلد نوع "متن" استفاده کنید

ایجاد ستون "options_sélectionées" از نوع متن در جدول "survey":

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

ذخیره گزینه های انتخاب شده توسط کاربر هنگام ارسال فرم:

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

از جدول رابطه استفاده کنید

ایجاد جدول "categories_products" با ستون های "id_product" و "id_category":

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

ذخیره دسته های انتخاب شده توسط کاربر هنگام ارسال فرم:

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

از یک فیلد نوع "جدول" استفاده کنید

ایجاد ستون "options_selected" از نوع جدول در جدول "نظرسنجی" (اگر از PostgreSQL استفاده می کنید):

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

ذخیره گزینه های انتخاب شده توسط کاربر هنگام ارسال فرم:

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

توجه به این نکته ضروری است که در هر صورت، باید اطمینان حاصل کنید که مقادیر چک باکس شما قبل از ذخیره در پایگاه داده شما به درستی تایید و پاک شده است. برای این کار می توانید از کنترلرهای اعتبارسنجی لاراول و فیلترهای داده استفاده کنید.

[جمع: 1 منظور داشتن: 5]

نوشته شده توسط آنتون گیلدبراند

Anton یک توسعه دهنده تمام پشته است که مشتاق به اشتراک گذاری نکات و راه حل های کد با همکارانش و جامعه توسعه دهندگان است. Anton با پیشینه ای قوی در فن آوری های front-end و back-end، در انواع زبان های برنامه نویسی و فریم ورک ها مهارت دارد. او یکی از اعضای فعال انجمن های توسعه دهندگان آنلاین است و به طور مرتب ایده ها و راه حل هایی را برای کمک به دیگران در حل چالش های برنامه نویسی ارائه می دهد. آنتون در اوقات فراغت خود از به‌روز ماندن در مورد آخرین روندها و فناوری‌ها در این زمینه و آزمایش ابزارها و چارچوب‌های جدید لذت می‌برد.

دیدگاهتان را بنویسید

آدرس ایمیل شما منتشر نخواهد شد. علامت گذاری شده اند *

شما چه فکر میکنید؟

387 امتیاز
بالا بردن Downvote