in ,

Ларавел дахь мэдээллийн санд хэд хэдэн шалгах хайрцагны утгыг хэрхэн хадгалах вэ?

Би Ларавел дахь мэдээллийн санд шалгах хайрцагны утгыг хадгалах хэрэгтэй. Хэрхэн хийх талаар ?

Ларавел дахь мэдээллийн санд хэд хэдэн шалгах хайрцагны утгыг хэрхэн хадгалах вэ?
Ларавел дахь мэдээллийн санд хэд хэдэн шалгах хайрцагны утгыг хэрхэн хадгалах вэ?

Ларавел дахь мэдээллийн санд олон шалгах хайрцагны утгыг хадгалах хэд хэдэн арга байдаг. Энд зарим сонголтууд байна:

  1. "Boolean" төрлийн талбарыг ашиглана уу : шалгах хайрцаг бүрийг өөрийн мэдээллийн сангийн логикийн төрлийн талбарт "үнэн" эсвэл "худал" гэж хадгалах боломжтой.
  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-д олон шалгах хайрцагны утгыг хадгалах жишээ кодууд

Ларавел дахь мэдээллийн сан дахь олон шалгах хайрцагны утгыг хадгалах зарим жишээ кодууд энд байна.

"Boolean" төрлийн талбарыг ашиглана уу

"Хэрэглэгчид" хүснэгтэд "захиалгын_мэдээний товхимол" логик багана үүсгэх:

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

Харилцааны хүснэгтийг ашигла

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

"Хүснэгт" төрлийн талбарыг ашиглана уу

"Санал асуулга" хүснэгтэд хүснэгтийн төрлийн "сонгосон сонголтууд" баганыг үүсгэх (хэрэв та 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]

Бичигдсэн Антон Гилдебранд

Антон бол кодын зөвлөмж, шийдлүүдийг хамтран ажиллагсад болон хөгжүүлэгчдийн нийгэмлэгтэй хуваалцах сонирхолтой бүрэн стек хөгжүүлэгч юм. Фронт болон арын технологийн талаар сайн мэдлэгтэй Антон олон төрлийн програмчлалын хэл, хүрээг сайн эзэмшсэн. Тэрээр онлайн хөгжүүлэгчдийн форумын идэвхтэй гишүүн бөгөөд бусдад програмчлалын сорилтуудыг шийдвэрлэхэд нь туслах санаа, шийдлүүдийг тогтмол хувь нэмэр оруулдаг. Чөлөөт цагаараа Антон энэ салбарын хамгийн сүүлийн үеийн чиг хандлага, технологитой танилцаж, шинэ хэрэгсэл, хүрээг туршиж үзэх дуртай.

Laisser НҮБ-ын commentaire

Таны имэйл хаяг нийтлэгдэхгүй. Шаардлагатай талбарууд гэж тэмдэглэгдсэн байна *

Чи юу гэж бодож байна?

387 оноо
Upvote Downvote