Obstaja več načinov za shranjevanje vrednosti več potrditvenih polj v bazi podatkov v Laravelu. Tukaj je nekaj možnosti:
- Uporabite polje tipa »boolean«. : vsako potrditveno polje je mogoče shraniti kot »true« ali »false« v polje logičnega tipa v vaši bazi podatkov.
- Uporabite polje tipa »besedilo«. : vrednosti vseh označenih potrditvenih polj lahko shranite v besedilno polje, pri čemer vsako vrednost ločite z vejico. Na primer, če je uporabnik označil polji »sadje« in »zelenjava«, lahko te informacije shranite kot »sadje, zelenjava« v besedilno polje.
- Uporabite tabelo odnosov : če imate več potrditvenih polj, ki so povezana z istim zapisom, lahko uporabite relacijsko tabelo za shranjevanje teh podatkov. Na primer, če imate tabelo »izdelki« s stolpcem »kategorije«, lahko ustvarite tabelo »kategorije_izdelkov«, ki poveže izbrane kategorije z vsakim izdelkom.
- Uporabite polje tipa "tabela". : Če uporabljate zbirko podatkov, ki podpira matrike (kot je PostgreSQL), lahko shranite vrednosti več potrditvenih polj v polju vrste matrike. To vam bo omogočilo shranjevanje več vrednosti v eno polje, ne da bi morali uporabiti tabelo odnosov.
Kazalo vsebine
Shranite več vrednosti potrditvenih polj v zbirko podatkov z uporabo matrike
V Laravelu lahko shranite več vrednosti potrditvenih polj v bazo podatkov z uporabo matrike za shranjevanje vrednosti v eno polje. Tukaj je primer, kako lahko to storite:
1. Ustvarite selitev, da dodate polje v tabelo zbirke podatkov za shranjevanje vrednosti potrditvenih polj. Na primer, če želite shraniti vrednosti v polje z imenom "možnosti", lahko uporabite naslednjo selitev:
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. V obrazcu ustvarite potrditvena polja za vsako možnost, ki jo želite shraniti. Na primer:
<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. V logiki obdelave oddaje obrazca pridobite vrednosti izbranih potrditvenih polj in jih shranite v bazo podatkov. Na primer:
$options = $request->input('options');
$model = new Model();
$model->options = json_encode($options);
$model->save();
To shrani vrednosti izbranih potrditvenih polj v polju »možnosti« kot JSON kodirano polje. Nato lahko pridobite in prikažete izbrane vrednosti z dekodiranjem matrike JSON, ko pridobite zapis iz baze podatkov.
$model = Model::find($id);
$options = json_decode($model->options);
Vzorčne kode za shranjevanje več vrednosti potrditvenih polj v Laravel
Tukaj je nekaj vzorčnih kod za shranjevanje vrednosti več potrditvenih polj v bazi podatkov v Laravelu:
Uporabite polje tipa »boolean«.
Ustvarjanje logičnega stolpca »subscription_newsletter« v tabeli »uporabniki«:
Schema::table('utilisateurs', function (Blueprint $table) {
$table->boolean('abonnement_newsletter')->default(0);
});
Prijava uporabnika na novice ob oddaji obrazca:
$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();
Uporabite polje tipa »besedilo«.
Ustvarjanje stolpca »options_sélectionées« vrste besedila v tabeli »survey«:
Schema::table('sondage', function (Blueprint $table) {
$table->text('options_sélectionnées');
});
Shranjevanje možnosti, ki jih je uporabnik izbral ob oddaji obrazca:
$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();
Uporabite tabelo odnosov
Izdelava tabele "categories_products" s stolpcema "id_product" in "id_category":
Schema::create('catégories_produits', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('id_produit');
$table->integer('id_catégorie');
$table->timestamps();
});
Shranjevanje kategorij, ki jih uporabnik izbere ob oddaji obrazca:
$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();
}
Uporabite polje tipa "tabela".
Izdelava stolpca "options_selected" vrste tabele v tabeli "poll" (če uporabljate PostgreSQL):
Schema::table('sondage', function (Blueprint $table) {
$table->jsonb('options_sélectionnées');
});
Shranjevanje možnosti, ki jih je uporabnik izbral ob oddaji obrazca:
$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();
Pomembno je upoštevati, da boste morali v vsakem primeru zagotoviti, da so vaše vrednosti potrditvenih polj pravilno potrjene in očiščene, preden jih shranite v svojo zbirko podatkov. Za to lahko uporabite Laravelove krmilnike za preverjanje veljavnosti in podatkovne filtre.