Það eru nokkrar leiðir til að geyma gildi margra gátreita í gagnagrunni í Laravel. Hér eru nokkrir valkostir:
- Notaðu „boolean“ tegund reit : Hægt er að vista hvern gátreit sem „sann“ eða „ósann“ í reit með boolean tegund í gagnagrunninum þínum.
- 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.
- 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.
- 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.
Innihaldsefni
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.