Kunezindlela ezimbalwa zokugcina amanani amabhokisi okuhlola amaningi kusizindalwazi eLaravel. Nazi ezinye izinketho:
- Sebenzisa inkambu yohlobo lwe-"boolean". : ibhokisi lokuhlola ngalinye lingalondolozwa njengokuthi "iqiniso" noma "amanga" endaweni yohlobo lwe-boolean kusizindalwazi sakho.
- Sebenzisa inkambu yohlobo "lombhalo". : ungagcina amanani awo wonke amabhokisi okuhlola akhethiwe endaweni yohlobo lombhalo, uhlukanise inani ngalinye ngokhefana. Isibonelo, uma umsebenzisi ekhethe amabhokisi "ezithelo" kanye "nemifino", ungagcina lolu lwazi "njengezithelo, imifino" kunkambu yohlobo lombhalo.
- Sebenzisa ithebula lobudlelwano : uma unamabhokisi okuhlola ambalwa axhunywe kwirekhodi elifanayo, ungasebenzisa ithebula lokuhlobana ukuze ugcine le datha. Isibonelo, uma unethebula "lemikhiqizo" elinekholomu "yezigaba", ungakha ithebula elithi "product_categories" elixhumanisa izigaba ezikhethiwe kumkhiqizo ngamunye.
- Sebenzisa inkambu yohlobo "yethebula". : Uma usebenzisa isizindalwazi esisekela amalungu afanayo (njenge-PostgreSQL), ungagcina amanani amabhokisi okuhlola amaningi endaweni yohlobo lwamalungu afanayo. Lokhu kuzokuvumela ukuthi ugcine amanani amaningi endaweni eyodwa ngaphandle kokusebenzisa ithebula lobudlelwano.
Uhlu lokuqukethwe
Gcina amanani amabhokisi okuhlola amaningi kusizindalwazi usebenzisa uhlu
Ku-Laravel, ungagcina amanani amabhokisi okuhlola amaningi kusizindalwazi ngokusebenzisa uhlu ukuze ugcine amanani endaweni eyodwa. Nasi isibonelo sendlela ongakwenza ngayo:
1. Dala ukuthutha ukuze wengeze inkambu kuthebula lakho lesizindalwazi ukuze ugcine amanani ebhokisi lokuhlola. Isibonelo, uma ufuna ukugcina amanani endaweni ebizwa ngokuthi "izinketho", ungasebenzisa ukuthutha okulandelayo:
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. Ngefomu lakho, dala amabhokisi okuhlola enketho ngayinye ofuna ukuyigcina. Ngokwesibonelo :
<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. Ku-logic yakho yokucubungula ukuthunyelwa kwefomu, thola amanani amabhokisi okuhlola akhethiwe bese uwagcina kusizindalwazi. Ngokwesibonelo :
$options = $request->input('options');
$model = new Model();
$model->options = json_encode($options);
$model->save();
Lokhu kugcina amanani amabhokisi okuhlola akhethiwe endaweni ethi "izinketho" njengamalungu afanayo ekhodi ye-JSON. Ungathola futhi ubonise amanani akhethiwe ngokuqopha uhlu lwe-JSON lapho ulanda irekhodi kusizindalwazi.
$model = Model::find($id);
$options = json_decode($model->options);
Amakhodi esampula okugcina amanani ebhokisi lokuhlola amaningi e-Laravel
Nawa amanye amakhodi esampula okugcina amanani amabhokisi okuhlola amaningi kusizindalwazi ku-Laravel:
Sebenzisa inkambu yohlobo lwe-"boolean".
Ukwakhiwa kwekholomu ye-boolean ye-“subscription_newsletter” kuthebula elithi “users”:
Schema::table('utilisateurs', function (Blueprint $table) {
$table->boolean('abonnement_newsletter')->default(0);
});
Ukubhaliswa kokubhaliselwe komsebenzisi ku-newsletter lapho kuhanjiswa ifomu:
$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();
Sebenzisa inkambu yohlobo "lombhalo".
Ukwakhiwa kwekholomu ye-"options_sélectionées" yohlobo lombhalo kuthebula elithi "survey":
Schema::table('sondage', function (Blueprint $table) {
$table->text('options_sélectionnées');
});
Ilondoloza izinketho ezikhethwe umsebenzisi lapho kuhanjiswa ifomu:
$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();
Sebenzisa ithebula lobudlelwano
Ukwakhiwa kwethebula elithi "categories_products" elinamakholomu "id_product" kanye "id_category":
Schema::create('catégories_produits', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('id_produit');
$table->integer('id_catégorie');
$table->timestamps();
});
Ukulondoloza izigaba ezikhethwe umsebenzisi lapho ehambisa ifomu:
$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();
}
Sebenzisa inkambu yohlobo "yethebula".
Ukwakhiwa kwekholomu ethi "options_selected" yohlobo lwamalungu afanayo kuthebula elithi "poll" (uma usebenzisa i-PostgreSQL):
Schema::table('sondage', function (Blueprint $table) {
$table->jsonb('options_sélectionnées');
});
Ilondoloza izinketho ezikhethwe umsebenzisi lapho kuhanjiswa ifomu:
$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();
Kubalulekile ukuqaphela ukuthi, kunoma yikuphi, uzodinga ukuqinisekisa ukuthi amanani ebhokisi lakho likaqhwi aqinisekiswa kahle futhi ahlanzwe ngaphambi kokuba alondolozwe kusizindalwazi sakho. Ungasebenzisa izilawuli zokuqinisekisa ze-Laravel nezihlungi zedatha kulokhu.