in ,

Jinsi ya kuhifadhi maadili mengi ya kisanduku kwenye hifadhidata huko Laravel?

Ninahitaji kuhifadhi maadili ya kisanduku cha kuteua kwenye hifadhidata huko Laravel. Jinsi ya kufanya?

Jinsi ya kuhifadhi maadili mengi ya kisanduku kwenye hifadhidata huko Laravel?
Jinsi ya kuhifadhi maadili mengi ya kisanduku kwenye hifadhidata huko Laravel?

Kuna njia kadhaa za kuhifadhi maadili ya visanduku vingi vya kuteua kwenye hifadhidata ya Laravel. Hapa kuna baadhi ya chaguzi:

  1. Tumia sehemu ya aina ya "boolean". : kila kisanduku cha kuteua kinaweza kuhifadhiwa kama "kweli" au "sivyo" katika sehemu ya aina ya boolean kwenye hifadhidata yako.
  2. Tumia sehemu ya aina ya "maandishi". : unaweza kuhifadhi thamani za visanduku tiki vyote vilivyowekwa alama kwenye uga wa aina ya maandishi, ukitenganisha kila thamani na koma. Kwa mfano, kama mtumiaji aliteua masanduku ya "matunda" na "mboga", unaweza kuhifadhi maelezo haya kama "matunda, mboga" katika uga wa aina ya maandishi.
  3. Tumia meza ya uhusiano : ikiwa una visanduku vya kuteua kadhaa ambavyo vimeunganishwa kwa rekodi sawa, unaweza kutumia jedwali la uhusiano kuhifadhi data hii. Kwa mfano, ikiwa una jedwali la "bidhaa" lenye safu wima ya "kategoria", unaweza kuunda jedwali la "product_categories" ambalo huunganisha kategoria zilizochaguliwa kwa kila bidhaa.
  4. Tumia uga wa aina ya "meza". : Ikiwa unatumia hifadhidata inayoauni safu (kama PostgreSQL), unaweza kuhifadhi thamani za visanduku vya kuteua vingi katika uga wa aina ya safu. Hii itakuruhusu kuhifadhi thamani nyingi kwenye sehemu moja bila kutumia jedwali la uhusiano.

Hifadhi thamani nyingi za kisanduku cha kuteua kwenye hifadhidata kwa kutumia safu

Katika Laravel, unaweza kuhifadhi thamani nyingi za kisanduku cha kuteua kwenye hifadhidata kwa kutumia safu kuhifadhi thamani katika sehemu moja. Hapa kuna mfano wa jinsi unavyoweza kuifanya:

1. Unda uhamishaji ili kuongeza sehemu kwenye jedwali lako la hifadhidata ili kuhifadhi thamani za kisanduku cha kuteua. Kwa mfano, ikiwa unataka kuhifadhi maadili kwenye sehemu inayoitwa "chaguo", unaweza kutumia uhamiaji ufuatao:

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. Katika fomu yako, unda visanduku vya kuteua kwa kila chaguo unalotaka kuhifadhi. Kwa mfano :

<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. Katika mantiki ya kuchakata uwasilishaji wa fomu yako, rudisha thamani za visanduku vya kuteua vilivyochaguliwa na uzihifadhi kwenye hifadhidata. Kwa mfano :

$options = $request->input('options');

$model = new Model();
$model->options = json_encode($options);
$model->save();

Hii huhifadhi thamani za visanduku vya kuteua vilivyochaguliwa katika sehemu ya "chaguo" kama safu iliyosimbwa ya JSON. Kisha unaweza kupata na kuonyesha maadili yaliyochaguliwa kwa kusimbua safu ya JSON unapopata rekodi kutoka kwa hifadhidata.

$model = Model::find($id);
$options = json_decode($model->options);

Sampuli za nambari za kuhifadhi maadili ya kisanduku cha kuteua huko Laravel

Hapa kuna nambari za sampuli za kuhifadhi maadili ya visanduku vingi vya kuteua kwenye hifadhidata huko Laravel:

Tumia sehemu ya aina ya "boolean".

Uundaji wa safu wima ya boolean ya "subscription_newsletter" katika jedwali la "watumiaji":

Schema::table('utilisateurs', function (Blueprint $table) {
    $table->boolean('abonnement_newsletter')->default(0);
});

Usajili wa usajili wa mtumiaji kwa jarida wakati wa kuwasilisha fomu:

$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();

Tumia sehemu ya aina ya "maandishi".

Uundaji wa safu wima ya "options_sélectionées" ya aina ya maandishi katika jedwali la "utafiti":

Schema::table('sondage', function (Blueprint $table) {
    $table->text('options_sélectionnées');
});

Kuhifadhi chaguo zilizochaguliwa na mtumiaji wakati wa kuwasilisha fomu:

$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();

Tumia meza ya uhusiano

Uundaji wa jedwali la "categories_products" lenye safu wima "id_product" na "id_category":

Schema::create('catégories_produits', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->integer('id_produit');
    $table->integer('id_catégorie');
    $table->timestamps();
});

Kuhifadhi kategoria zilizochaguliwa na mtumiaji wakati wa kuwasilisha fomu:

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

Tumia uga wa aina ya "meza".

Uundaji wa safu wima "options_selected" ya aina ya jedwali kwenye jedwali "poll" (ikiwa unatumia PostgreSQL):

Schema::table('sondage', function (Blueprint $table) {
    $table->jsonb('options_sélectionnées');
});

Kuhifadhi chaguo zilizochaguliwa na mtumiaji wakati wa kuwasilisha fomu:

$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();

Ni muhimu kutambua kwamba, kwa hali yoyote, utahitaji kuhakikisha kuwa maadili ya kisanduku chako yamethibitishwa na kusafishwa vizuri kabla ya kuhifadhiwa kwenye hifadhidata yako. Unaweza kutumia vidhibiti vya uthibitishaji vya Laravel na vichujio vya data kwa hili.

[Jumla: 1 Maana: 5]

Imeandikwa na Anton Gildebrand

Anton ni msanidi programu kamili mwenye shauku ya kushiriki vidokezo na suluhu za msimbo na wenzake na jumuiya ya wasanidi programu. Akiwa na usuli dhabiti katika teknolojia za mbele na nyuma, Anton ana ujuzi katika lugha na mifumo mbalimbali ya programu. Yeye ni mwanachama hai wa mabaraza ya wasanidi programu na huchangia mara kwa mara mawazo na masuluhisho ili kuwasaidia wengine kutatua changamoto za upangaji programu. Katika muda wake wa ziada, Anton anafurahia kusasishwa kuhusu mitindo na teknolojia za hivi punde uwanjani na kujaribu zana na mifumo mipya.

Kuacha maoni

Anwani yako ya barua pepe haitachapishwa. Mashamba required ni alama *

Unafikiri?

387 Points
Upvote Punguza