Postoji nekoliko načina za pohranjivanje vrijednosti više potvrdnih okvira u bazi podataka u Laravelu. Evo nekoliko opcija:
- Koristite polje tipa "boolean". : svaki potvrdni okvir može se spremiti kao "točno" ili "netočno" u booleovom polju tipa u vašoj bazi podataka.
- Koristite polje tipa "tekst". : možete pohraniti vrijednosti svih označenih potvrdnih okvira u tekstualno polje, odvajajući svaku vrijednost zarezom. Na primjer, ako je korisnik označio okvire "voće" i "povrće", možete spremiti ove informacije kao "voće, povrće" u tekstualno polje.
- Koristite tablicu odnosa : ako imate nekoliko potvrdnih okvira koji su povezani s istim zapisom, možete koristiti relacijsku tablicu za pohranu ovih podataka. Na primjer, ako imate tablicu "products" sa stupcem "categories", možete stvoriti tablicu "product_categories" koja povezuje odabrane kategorije sa svakim proizvodom.
- Koristite polje tipa "tablica". : Ako koristite bazu podataka koja podržava nizove (kao što je PostgreSQL), možete pohraniti vrijednosti više potvrdnih okvira u polje vrste polja. To će vam omogućiti da pohranite više vrijednosti u jednom polju bez potrebe za korištenjem tablice odnosa.
Sadržaj
Pohranite višestruke vrijednosti potvrdnih okvira u bazu podataka koristeći niz
U Laravelu možete pohraniti više vrijednosti potvrdnih okvira u bazu podataka korištenjem niza za pohranjivanje vrijednosti u jedno polje. Evo primjera kako to možete učiniti:
1. Kreirajte migraciju da biste dodali polje u svoju tablicu baze podataka za pohranu vrijednosti potvrdnog okvira. Na primjer, ako želite pohraniti vrijednosti u polje pod nazivom "opcije", možete koristiti sljedeću migraciju:
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. U svom obrascu stvorite potvrdne okvire za svaku opciju koju želite spremiti. Na primjer :
<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. U logici obrade slanja obrasca dohvatite vrijednosti odabranih potvrdnih okvira i pohranite ih u bazu podataka. Na primjer :
$options = $request->input('options');
$model = new Model();
$model->options = json_encode($options);
$model->save();
Ovo pohranjuje vrijednosti odabranih potvrdnih okvira u polju "opcije" kao JSON kodirano polje. Zatim možete dohvatiti i prikazati odabrane vrijednosti dekodiranjem JSON polja kada dohvatite zapis iz baze podataka.
$model = Model::find($id);
$options = json_decode($model->options);
Primjeri kodova za pohranu višestrukih vrijednosti potvrdnih okvira u Laravelu
Evo nekoliko primjera kodova za pohranjivanje vrijednosti više potvrdnih okvira u bazi podataka u Laravelu:
Koristite polje tipa "boolean".
Stvaranje booleovog stupca “subscription_newsletter” u tablici “users”:
Schema::table('utilisateurs', function (Blueprint $table) {
$table->boolean('abonnement_newsletter')->default(0);
});
Prijava pretplate korisnika na newsletter prilikom slanja obrasca:
$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();
Koristite polje tipa "tekst".
Stvaranje stupca "options_sélectionées" tipa teksta u tablici "survey":
Schema::table('sondage', function (Blueprint $table) {
$table->text('options_sélectionnées');
});
Spremanje opcija koje je korisnik odabrao prilikom slanja obrasca:
$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();
Koristite tablicu odnosa
Izrada tablice "categories_products" sa stupcima "id_product" i "id_category":
Schema::create('catégories_produits', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('id_produit');
$table->integer('id_catégorie');
$table->timestamps();
});
Spremanje kategorija koje je korisnik odabrao prilikom slanja obrasca:
$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();
}
Koristite polje tipa "tablica".
Kreiranje stupca "options_selected" tipa tablice u tablici "poll" (ako koristite PostgreSQL):
Schema::table('sondage', function (Blueprint $table) {
$table->jsonb('options_sélectionnées');
});
Spremanje opcija koje je korisnik odabrao prilikom slanja obrasca:
$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();
Važno je napomenuti da ćete, u svakom slučaju, morati osigurati da su vrijednosti vaših potvrdnih okvira pravilno potvrđene i očišćene prije nego što se pohrane u vašu bazu podataka. Za to možete koristiti Laravel kontrolere za provjeru valjanosti i filtre podataka.