in ,

كيف تخزن قيم Checkbox متعددة في قاعدة بيانات في Laravel؟

أحتاج إلى تخزين قيم مربعات الاختيار في قاعدة البيانات في Laravel. كيف أفعل ؟

كيف تخزن قيم Checkbox متعددة في قاعدة بيانات في Laravel؟
كيف تخزن قيم Checkbox متعددة في قاعدة بيانات في Laravel؟

توجد عدة طرق لتخزين قيم مربعات الاختيار المتعددة في قاعدة بيانات في Laravel. فيما يلي بعض الخيارات:

  1. استخدم حقل نوع "منطقي" : يمكن حفظ كل خانة اختيار على أنها "صواب" أو "خطأ" في حقل نوع منطقي في قاعدة البيانات الخاصة بك.
  2. استخدم حقل نوع "نص" : يمكنك تخزين قيم جميع مربعات الاختيار المحددة في حقل نوع النص ، مع فصل كل قيمة بفاصلة. على سبيل المثال ، إذا حدد المستخدم مربعي "فواكه" و "خضروات" ، يمكنك حفظ هذه المعلومات باسم "فواكه ، خضروات" في حقل نوع النص.
  3. استخدم جدول العلاقة : إذا كان لديك عدة مربعات اختيار مرتبطة بالسجل نفسه ، فيمكنك استخدام جدول العلاقة لتخزين هذه البيانات. على سبيل المثال ، إذا كان لديك جدول "منتجات" به عمود "فئات" ، فيمكنك إنشاء جدول "فئات_المنتج" الذي يربط الفئات المحددة بكل منتج.
  4. استخدم حقل نوع "جدول" : إذا كنت تستخدم قاعدة بيانات تدعم المصفوفات (مثل PostgreSQL) ، فيمكنك تخزين قيم مربعات الاختيار المتعددة في حقل نوع المصفوفة. سيسمح لك هذا بتخزين قيم متعددة في حقل واحد دون الحاجة إلى استخدام جدول علاقة.

تخزين قيم مربعات الاختيار المتعددة في قاعدة بيانات باستخدام مصفوفة

في Laravel ، يمكنك تخزين قيم مربعات اختيار متعددة في قاعدة بيانات باستخدام مصفوفة لتخزين القيم في حقل واحد. فيما يلي مثال على كيفية القيام بذلك:

1. قم بإنشاء ترحيل لإضافة حقل إلى جدول قاعدة البيانات لتخزين قيم مربعات الاختيار. على سبيل المثال ، إذا كنت تريد تخزين القيم في حقل يسمى "خيارات" ، فيمكنك استخدام الترحيل التالي:

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);

عينة من الأكواد لتخزين قيم مربعات الاختيار المتعددة في Laravel

فيما يلي بعض نماذج الأكواد لتخزين قيم مربعات الاختيار المتعددة في قاعدة بيانات في Laravel:

استخدم حقل نوع "منطقي"

إنشاء العمود المنطقي "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" من نوع النص في جدول "الاستبيان":

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

من المهم ملاحظة أنه ، على أي حال ، ستحتاج إلى التأكد من التحقق من صحة قيم خانة الاختيار الخاصة بك وتنظيفها بشكل صحيح قبل حفظها في قاعدة البيانات الخاصة بك. يمكنك استخدام أدوات التحكم في التحقق من الصحة وعوامل تصفية البيانات في Laravel لهذا الغرض.

[مجموع: 1 يقصد: 5]

كتب بواسطة انطون جيلدبراند

أنطون هو مطور مكدس كامل متحمس لمشاركة نصائح وحلول الكود مع زملائه ومجتمع المطورين. مع خلفية صلبة في تقنيات الواجهة الأمامية والخلفية ، يتقن أنطون مجموعة متنوعة من لغات البرمجة وأطر العمل. وهو عضو نشط في منتديات المطورين عبر الإنترنت ويساهم بانتظام بأفكار وحلول لمساعدة الآخرين في حل تحديات البرمجة. في أوقات فراغه ، يستمتع أنطون بمواكبة أحدث الاتجاهات والتقنيات في هذا المجال وتجربة الأدوات والأطر الجديدة.

قم بكتابة تعليق

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

ما رأيك؟