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