Mitme märkeruudu väärtuste salvestamiseks Laraveli andmebaasi on mitu võimalust. Siin on mõned valikud.
- Kasutage "tõve" tüüpi välja : iga märkeruudu saab salvestada andmebaasi tõeväärtuse tüüpi väljale kui "tõene" või "väär".
- Kasutage "teksti" tüüpi välja : saate salvestada kõigi märgitud märkeruutude väärtused tekstitüübi väljale, eraldades iga väärtuse komaga. Näiteks kui kasutaja märkis ruudud "puuviljad" ja "köögiviljad", saate selle teabe tekstitüübi väljale salvestada kui "puuviljad, köögiviljad".
- Kasutage seoste tabelit : kui teil on mitu märkeruutu, mis on lingitud sama kirjega, saate nende andmete salvestamiseks kasutada seoste tabelit. Näiteks kui teil on tabel "products" veeruga "categories", saate luua tabeli "product_categories", mis seob valitud kategooriad iga tootega.
- Kasutage "tabeli" tüüpi välja : Kui kasutate massiive toetavat andmebaasi (nt PostgreSQL), saate massiivitüübi väljale salvestada mitme märkeruudu väärtused. See võimaldab salvestada mitu väärtust ühele väljale ilma seosetabelit kasutamata.
Sisukord
Salvestage massiivi kasutades andmebaasi mitu märkeruudu väärtust
Laravelis saate salvestada andmebaasi mitu märkeruudu väärtust, kasutades väärtuste ühele väljale salvestamiseks massiivi. Siin on näide selle kohta, kuidas seda teha.
1. Looge migratsioon, et lisada oma andmebaasi tabelisse märkeruutude väärtuste salvestamiseks väli. Näiteks kui soovite salvestada väärtused väljale nimega "suvandid", saate kasutada järgmist migratsiooni:
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. Looge oma vormis märkeruudud iga valiku jaoks, mida soovite salvestada. Näiteks :
<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. Otsige oma vormi esitamise töötlemise loogikast valitud märkeruutude väärtused ja salvestage need andmebaasi. Näiteks :
$options = $request->input('options');
$model = new Model();
$model->options = json_encode($options);
$model->save();
See salvestab valitud märkeruutude väärtused väljale "suvandid" JSON-kodeeritud massiivina. Seejärel saate valitud väärtused tuua ja kuvada, dekodeerides JSON-massiivi, kui toote kirje andmebaasist alla.
$model = Model::find($id);
$options = json_decode($model->options);
Näidiskoodid mitme märkeruudu väärtuse salvestamiseks Laravelis
Siin on mõned näidiskoodid mitme märkeruudu väärtuste salvestamiseks Laraveli andmebaasi:
Kasutage "tõve" tüüpi välja
Tõeväärtuse veeru „subscription_newsletter” loomine tabelis „users”:
Schema::table('utilisateurs', function (Blueprint $table) {
$table->boolean('abonnement_newsletter')->default(0);
});
Kasutaja uudiskirjaga liitumise registreerimine vormi esitamisel:
$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();
Kasutage "teksti" tüüpi välja
Tabelis "Uuring" tekstitüübi veeru "options_sélectionées" loomine:
Schema::table('sondage', function (Blueprint $table) {
$table->text('options_sélectionnées');
});
Kasutaja poolt vormi esitamisel valitud valikute salvestamine:
$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();
Kasutage seoste tabelit
Tabeli "categories_products" loomine veergudega "id_product" ja "id_category":
Schema::create('catégories_produits', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('id_produit');
$table->integer('id_catégorie');
$table->timestamps();
});
Kasutaja poolt vormi esitamisel valitud kategooriate salvestamine:
$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();
}
Kasutage "tabeli" tüüpi välja
Tabelitüübiga veeru "options_selected" loomine tabelis "poll" (kui kasutate PostgreSQL-i):
Schema::table('sondage', function (Blueprint $table) {
$table->jsonb('options_sélectionnées');
});
Kasutaja poolt vormi esitamisel valitud valikute salvestamine:
$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();
Oluline on märkida, et igal juhul peate enne andmebaasi salvestamist veenduma, et teie märkeruutude väärtused on korralikult kinnitatud ja puhastatud. Selleks saate kasutada Laraveli valideerimiskontrollereid ja andmefiltreid.