in ,

Hvernig á að geyma mörg gátreitsgildi í gagnagrunni í Laravel?

Ég þarf að geyma gátreit gildi í gagnagrunni í Laravel. Hvernig á að gera ?

Hvernig á að geyma mörg gátreitsgildi í gagnagrunni í Laravel?
Hvernig á að geyma mörg gátreitsgildi í gagnagrunni í Laravel?

Það eru nokkrar leiðir til að geyma gildi margra gátreita í gagnagrunni í Laravel. Hér eru nokkrir valkostir:

  1. Notaðu „boolean“ tegund reit : Hægt er að vista hvern gátreit sem „sann“ eða „ósann“ í reit með boolean tegund í gagnagrunninum þínum.
  2. Notaðu „texta“ reit : þú getur geymt gildi allra merktra gátreita í textareit, aðskilið hvert gildi með kommu. Til dæmis, ef notandinn hakaði við "ávextir" og "grænmeti" reitina, getur þú vistað þessar upplýsingar sem "ávextir, grænmeti" í textareit.
  3. Notaðu venslatöflu : ef þú ert með nokkra gátreiti sem eru tengdir við sömu skrána geturðu notað venslatöflu til að geyma þessi gögn. Til dæmis, ef þú ert með „vörur“ töflu með „flokkum“ dálki, geturðu búið til „vöruflokka“ töflu sem tengir valda flokka við hverja vöru.
  4. Notaðu reit fyrir „töflu“ : Ef þú ert að nota gagnagrunn sem styður fylki (eins og PostgreSQL), geturðu geymt gildi margra gátreita í fylkisgerð reit. Þetta gerir þér kleift að geyma mörg gildi á einum reit án þess að þurfa að nota venslatöflu.

Geymdu mörg gátreitsgildi í gagnagrunni með því að nota fylki

Í Laravel geturðu geymt mörg gátreitsgildi í gagnagrunni með því að nota fylki til að geyma gildin á einum reit. Hér er dæmi um hvernig þú getur gert það:

1. Búðu til flutning til að bæta reit við gagnagrunnstöfluna þína til að geyma gátreitagildi. Til dæmis, ef þú vilt geyma gildin í reit sem kallast „valkostir“, geturðu notað eftirfarandi flutning:

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. Í eyðublaðinu þínu skaltu búa til gátreiti fyrir hvern valkost sem þú vilt vista. Til dæmis :

<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. Sæktu gildin af völdum gátreitum í vinnslurökfræði eyðublaðaskila og geymdu þau í gagnagrunninum. Til dæmis :

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

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

Þetta geymir gildi valinna gátreitanna í reitnum „valkostir“ sem JSON kóðuð fylki. Þú getur síðan sótt og birt valin gildi með því að afkóða JSON fylkið þegar þú sækir skrána úr gagnagrunninum.

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

Dæmi um kóða til að geyma mörg gátreitsgildi í Laravel

Hér eru nokkur dæmi um kóða til að geyma gildi margra gátreita í gagnagrunni í Laravel:

Notaðu „boolean“ tegund reit

Stofnun „subscription_newsletter“ boolean dálksins í „notendum“ töflunni:

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

Skráning á áskrift notanda að fréttabréfi við sendingu eyðublaðs:

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

Notaðu „texta“ reit

Stofnun „options_sélectionées“ dálksins af textategund í „könnun“ töflunni:

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

Að vista valkostina sem notandinn valdi þegar hann sendir eyðublaðið:

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

Notaðu venslatöflu

Stofnun á töflunni „flokkar_vörur“ með dálkunum „id_product“ og „id_category“:

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

Að vista flokka sem notandinn valdi þegar eyðublaðið er sent inn:

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

Notaðu reit fyrir „töflu“

Stofnun dálksins „options_selected“ af töflugerð í töflunni „könnun“ (ef þú notar PostgreSQL):

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

Að vista valkostina sem notandinn valdi þegar hann sendir eyðublaðið:

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

Það er mikilvægt að hafa í huga að í öllum tilvikum þarftu að tryggja að gátreitargildin þín séu rétt staðfest og hreinsuð áður en þau eru vistuð í gagnagrunninum þínum. Þú getur notað löggildingarstýringar Laravel og gagnasíur fyrir þetta.

[Alls: 1 Vondur: 5]

Skrifað af Anton Gildebrand

Anton er fullur staflar þróunaraðili sem hefur brennandi áhuga á að deila kóðaráðum og lausnum með samstarfsfólki sínu og þróunarsamfélaginu. Með traustan bakgrunn í framenda- og bakendatækni er Anton vandvirkur í ýmsum forritunarmálum og umgjörðum. Hann er virkur meðlimur á vettvangi þróunaraðila á netinu og leggur reglulega til hugmyndir og lausnir til að hjálpa öðrum að leysa forritunaráskoranir. Í frítíma sínum nýtur Anton þess að fylgjast með nýjustu straumum og tækni á þessu sviði og gera tilraunir með ný tæki og umgjörð.

Skildu eftir athugasemd

Netfangið þitt verður ekki birt. Nauðsynlegir reitir eru merktir *

Hvað finnst þér?