in ,

Ինչպե՞ս պահպանել մի քանի Checkbox արժեքներ տվյալների բազայում Laravel-ում:

Ես պետք է պահեմ վանդակի արժեքները տվյալների բազայում Laravel-ում: Թե ինչպես պետք է անել ?

Ինչպե՞ս պահպանել մի քանի Checkbox արժեքներ տվյալների բազայում Laravel-ում:
Ինչպե՞ս պահպանել մի քանի Checkbox արժեքներ տվյալների բազայում Laravel-ում:

Laravel-ի տվյալների բազայում մի քանի վանդակների արժեքները պահելու մի քանի եղանակ կա: Ահա որոշ տարբերակներ.

  1. Օգտագործեք «բուլյան» տիպի դաշտ Յուրաքանչյուր վանդակ կարող է պահպանվել որպես «ճշմարիտ» կամ «կեղծ» ձեր տվյալների բազայի բուլյան տիպի դաշտում:
  2. Օգտագործեք «տեքստային» տիպի դաշտ Դուք կարող եք պահել բոլոր նշված վանդակների արժեքները տեքստի տիպի դաշտում՝ յուրաքանչյուր արժեք առանձնացնելով ստորակետով: Օրինակ, եթե օգտատերը ստուգել է «մրգեր» և «բանջարեղեն» վանդակները, դուք կարող եք պահպանել այս տեղեկատվությունը որպես «մրգեր, բանջարեղեն» տեքստային տիպի դաշտում:
  3. Օգտագործեք հարաբերությունների աղյուսակ Եթե ​​դուք ունեք մի քանի վանդակներ, որոնք կապված են նույն գրառումին, կարող եք օգտագործել հարաբերությունների աղյուսակը՝ այս տվյալները պահելու համար: Օրինակ, եթե ունեք «products» աղյուսակ «կատեգորիաներ» սյունակով, կարող եք ստեղծել «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» բուլյան սյունակի ստեղծում.

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]

Գրված է Անտոն Գիլդեբրանդ

Անտոնը ամբողջական փաթեթի ծրագրավորող է, որը կրքոտ է իր գործընկերների և մշակողների համայնքի հետ կոդերի խորհուրդներով և լուծումներով կիսվելու հարցում: Front-end և back-end տեխնոլոգիաների ամուր ֆոն ունենալով, Անտոնը տիրապետում է տարբեր ծրագրավորման լեզուների և շրջանակների: Նա առցանց մշակողների ֆորումների ակտիվ անդամ է և պարբերաբար ներկայացնում է գաղափարներ և լուծումներ՝ օգնելու ուրիշներին լուծել ծրագրավորման մարտահրավերները: Ազատ ժամանակ Անտոնը հաճույք է ստանում ոլորտի վերջին միտումների և տեխնոլոգիաների մասին տեղեկանալուց և նոր գործիքների ու շրջանակների փորձարկումներից:

Թողնել մեկնաբանություն

Ձեր էլ. Փոստի հասցեն չի հրապարակվի: Պահանջվող դաշտերը նշված են աստղանիշով *

Ինչ եք կարծում?

387 Միավորները
Վերեւում Downvote