in ,

Ларавелдегі дерекқорда бірнеше құсбелгі мәндерін қалай сақтауға болады?

Маған Ларавелдегі дерекқордағы құсбелгі мәндерін сақтау керек. Қалай істеу керек?

Ларавелдегі дерекқорда бірнеше құсбелгі мәндерін қалай сақтауға болады?
Ларавелдегі дерекқорда бірнеше құсбелгі мәндерін қалай сақтауға болады?

Ларавелдегі дерекқорда бірнеше құсбелгілердің мәндерін сақтаудың бірнеше жолы бар. Міне, кейбір опциялар:

  1. «Логикалық» типті өрісті пайдаланыңыз : әрбір құсбелгіні дерекқордағы логикалық түр өрісінде «шын» немесе «жалған» ретінде сақтауға болады.
  2. «Мәтін» түрі өрісін пайдаланыңыз : барлық белгіленген құсбелгілердің мәндерін мәтін түрі өрісінде әрбір мәнді үтірмен бөліп сақтауға болады. Мысалы, егер пайдаланушы «жемістер» және «көкөністер» ұяшықтарын белгілесе, бұл ақпаратты мәтін түрі өрісінде «жемістер, көкөністер» ретінде сақтауға болады.
  3. Қарым-қатынас кестесін пайдаланыңыз : бір жазбаға байланыстырылған бірнеше құсбелгілер болса, осы деректерді сақтау үшін қатынас кестесін пайдалануға болады. Мысалы, егер сізде «санаттар» бағаны бар «өнімдер» кестесі болса, таңдалған санаттарды әрбір өнімге байланыстыратын «өнім_санаттары» кестесін жасауға болады.
  4. «Кесте» түрінің өрісін пайдаланыңыз : Егер сіз массивтерді қолдайтын дерекқорды (мысалы, PostgreSQL) пайдалансаңыз, массив түрі өрісінде бірнеше құсбелгілердің мәндерін сақтауға болады. Бұл қарым-қатынас кестесін пайдаланбай-ақ бір өрісте бірнеше мәндерді сақтауға мүмкіндік береді.

Жиым арқылы дерекқорда бірнеше құсбелгі мәндерін сақтаңыз

Ларавелде мәндерді бір өрісте сақтау үшін массивті пайдалану арқылы дерекқорда бірнеше құсбелгі мәндерін сақтауға болады. Міне, мұны қалай жасауға болатынының мысалы:

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

Ларавелде бірнеше құсбелгі мәндерін сақтауға арналған үлгі кодтары

Ларавелдегі дерекқордағы бірнеше құсбелгілердің мәндерін сақтауға арналған кейбір үлгі кодтары:

«Логикалық» типті өрісті пайдаланыңыз

«Пайдаланушылар» кестесіндегі «жазылу_жаңалықтары» логикалық бағанасын жасау:

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

«Кесте» түрінің өрісін пайдаланыңыз

«Сауалнама» кестесіндегі кесте түрінің «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]

Жазылған Антон Гилдебранд

Антон - әріптестерімен және әзірлеушілер қауымдастығымен кодтық кеңестер мен шешімдерді бөлісуге құмар толық стек әзірлеушісі. Фронт-end және back-end технологияларында жақсы білімі бар Антон әртүрлі бағдарламалау тілдері мен фреймворктарын жақсы біледі. Ол әзірлеушілер онлайн форумдарының белсенді мүшесі және басқаларға бағдарламалау мәселелерін шешуге көмектесу үшін үнемі идеялар мен шешімдерді ұсынады. Бос уақытында Антон осы саладағы соңғы трендтер мен технологиялардан хабардар болуды және жаңа құралдар мен құрылымдармен тәжірибе жасауды ұнатады.

Пікір қалдыру

Сіздің электрондық пошта мекен-жайыңыз жарияланбайды. Міндетті өрістер таңбаланған *

Сен не ойлайсың?

387 Points
Upvote Downvote