in ,

Како да зачувате повеќе вредности на Checkbox во базата на податоци во Laravel?

Треба да ги зачувам вредностите на полето за избор во базата на податоци во Ларавел. Како да се направи ?

Како да зачувате повеќе вредности на Checkbox во базата на податоци во Laravel?
Како да зачувате повеќе вредности на Checkbox во базата на податоци во 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);

Примерок на кодови за складирање на повеќе вредности на полето за избор во Ларавел

Еве неколку примероци на кодови за складирање на вредностите на повеќе полиња за избор во базата на податоци во Ларавел:

Користете поле од типот „бул“.

Создавање на буловата колона „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]

Напишано од Антон Гилдебранд

Антон е програмер со целосен стек, кој е страстен за споделување совети и решенија за кодови со своите колеги и заедницата на програмери. Со солидна позадина во предните и задните технологии, Антон е умешен во различни програмски јазици и рамки. Тој е активен член на онлајн форумите за програмери и редовно придонесува со идеи и решенија за да им помогне на другите да ги решат програмските предизвици. Во слободното време, Антон ужива да биде во тек со најновите трендови и технологии во оваа област и да експериментира со нови алатки и рамки.

Оставете коментар

Вашата адреса за е-пошта нема да биде објавена. Задолжителни полиња се означени *

Што мислите?