in ,

Як захаваць некалькі значэнняў сцяжка ў базе дадзеных у Laravel?

Мне трэба захоўваць значэнні сцяжкоў у базе дадзеных у Laravel. Як зрабіць ?

Як захаваць некалькі значэнняў сцяжка ў базе дадзеных у Laravel?
Як захаваць некалькі значэнняў сцяжка ў базе дадзеных у Laravel?

Ёсць некалькі спосабаў захоўвання значэнняў некалькіх сцяжкоў у базе дадзеных у Laravel. Вось некалькі варыянтаў:

  1. Выкарыстоўвайце поле тыпу "булева". : кожны сцяжок можа быць захаваны як "true" або "false" у полі лагічнага тыпу ў вашай базе дадзеных.
  2. Выкарыстоўвайце поле тыпу «тэкст». : вы можаце захоўваць значэнні ўсіх адзначаных сцяжкоў у тэкставым полі тыпу, падзяляючы кожнае значэнне коскай. Напрыклад, калі карыстальнік паставіў галачку ў полі "садавіна" і "гародніна", вы можаце захаваць гэтую інфармацыю як "садавіна, гародніна" ў тэкставым полі.
  3. Выкарыстоўвайце табліцу адносін : калі ў вас ёсць некалькі сцяжкоў, звязаных з адным і тым жа запісам, вы можаце выкарыстоўваць табліцу адносін для захавання гэтых даных. Напрыклад, калі ў вас ёсць табліца «products» са слупком «categories», вы можаце стварыць табліцу «product_categories», якая звязвае выбраныя катэгорыі з кожным прадуктам.
  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” у табліцы “users”:

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" таблічнага тыпу ў табліцы "poll" (пры выкарыстанні 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]

аўтар Антон Гільдэбранд

Антон з'яўляецца поўным стэкам распрацоўшчыкам, які любіць дзяліцца парадамі па кодах і рашэннямі са сваімі калегамі і супольнасцю распрацоўшчыкаў. Маючы салідны вопыт у інтэрфейсных і бэкэнд-тэхналогіях, Антон валодае рознымі мовамі праграмавання і фрэймворкамі. Ён з'яўляецца актыўным членам інтэрнэт-форумаў распрацоўшчыкаў і рэгулярна дае ідэі і рашэнні, каб дапамагчы іншым вырашаць праблемы праграмавання. У вольны час Антон любіць быць у курсе апошніх тэндэнцый і тэхналогій у гэтай галіне і эксперыментаваць з новымі інструментамі і фрэймворкамі.

Пакінуць каментар

Ваш адрас электроннай пошты не будзе апублікаваны. Абавязковыя палі пазначаныя *

Што вы думаеце?