Yra keletas būdų, kaip Laravel duomenų bazėje išsaugoti kelių žymimųjų laukelių reikšmes. Štai keletas parinkčių:
- Naudokite „bulio“ tipo lauką : kiekvienas žymimasis laukelis gali būti išsaugotas kaip „teisinga“ arba „klaidinga“ jūsų duomenų bazės loginio tipo lauke.
- Naudokite „teksto“ tipo lauką : galite išsaugoti visų pažymėtų žymimųjų laukelių reikšmes teksto tipo lauke, kiekvieną reikšmę atskirdami kableliu. Pavyzdžiui, jei vartotojas pažymėjo langelius „vaisiai“ ir „daržovės“, šią informaciją galite įrašyti kaip „vaisiai, daržovės“ teksto tipo lauke.
- Naudokite santykių lentelę : jei turite kelis žymimuosius laukelius, susietus su tuo pačiu įrašu, šiems duomenims saugoti galite naudoti ryšių lentelę. Pavyzdžiui, jei turite lentelę „products“ su stulpeliu „kategorijos“, galite sukurti lentelę „product_categories“, kuri susieja pasirinktas kategorijas su kiekvienu produktu.
- Naudokite „lentelės“ tipo lauką : Jei naudojate duomenų bazę, kuri palaiko masyvus (pvz., PostgreSQL), masyvo tipo lauke galite išsaugoti kelių žymimųjų laukelių reikšmes. Tai leis jums išsaugoti kelias reikšmes viename lauke nenaudojant ryšių lentelės.
Turinys
Išsaugokite kelias žymimųjų laukelių reikšmes duomenų bazėje naudodami masyvą
„Laravel“ duomenų bazėje galite išsaugoti kelias žymės langelių reikšmes, naudodami masyvą, kad išsaugotumėte reikšmes viename lauke. Štai pavyzdys, kaip galite tai padaryti:
1. Sukurkite perkėlimą, kad į duomenų bazės lentelę įtrauktumėte lauką, kuriame būtų saugomos žymimųjų laukelių reikšmės. Pavyzdžiui, jei norite išsaugoti reikšmes lauke, pavadintame „parinktys“, galite naudoti šį perkėlimą:
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. Formoje sukurkite kiekvienos parinkties, kurią norite išsaugoti, žymimuosius laukelius. Pavyzdžiui :
<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. Formos pateikimo apdorojimo logikoje nuskaitykite pasirinktų žymimųjų laukelių reikšmes ir išsaugokite jas duomenų bazėje. Pavyzdžiui :
$options = $request->input('options');
$model = new Model();
$model->options = json_encode($options);
$model->save();
Taip išsaugomos pasirinktų žymimųjų laukelių reikšmės lauke „parinktys“ kaip JSON užkoduotas masyvas. Tada galite nuskaityti ir parodyti pasirinktas reikšmes, dekoduodami JSON masyvą, kai nuskaitote įrašą iš duomenų bazės.
$model = Model::find($id);
$options = json_decode($model->options);
Pavyzdiniai kodai, skirti kelioms žymimųjų laukelių reikšmėms saugoti Laravel
Štai keletas pavyzdinių kodų, skirtų kelių žymimųjų langelių reikšmėms saugoti Laravel duomenų bazėje:
Naudokite „bulio“ tipo lauką
Loginio stulpelio „subscription_newsletter“ sukūrimas „vartotojų“ lentelėje:
Schema::table('utilisateurs', function (Blueprint $table) {
$table->boolean('abonnement_newsletter')->default(0);
});
Vartotojo naujienlaiškio prenumeratos registracija pateikiant formą:
$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();
Naudokite „teksto“ tipo lauką
Teksto tipo stulpelio "options_sélectionées" sukūrimas "apklausos" lentelėje:
Schema::table('sondage', function (Blueprint $table) {
$table->text('options_sélectionnées');
});
Išsaugokite parinktis, kurias pasirinko vartotojas pateikiant formą:
$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();
Naudokite santykių lentelę
Lentelės „categories_products“ su stulpeliais „id_product“ ir „id_category“ sukūrimas:
Schema::create('catégories_produits', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('id_produit');
$table->integer('id_catégorie');
$table->timestamps();
});
Išsaugomos kategorijos, kurias vartotojas pasirinko pateikdamas formą:
$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();
}
Naudokite „lentelės“ tipo lauką
Masyvo tipo stulpelio "options_selected" sukūrimas "apklausos" lentelėje (jei naudojate PostgreSQL):
Schema::table('sondage', function (Blueprint $table) {
$table->jsonb('options_sélectionnées');
});
Išsaugokite parinktis, kurias pasirinko vartotojas pateikiant formą:
$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();
Svarbu pažymėti, kad bet kuriuo atveju turėsite įsitikinti, kad jūsų žymimojo laukelio reikšmės yra tinkamai patvirtintos ir išvalytos prieš išsaugant jas duomenų bazėje. Tam galite naudoti Laravel patvirtinimo valdiklius ir duomenų filtrus.