Gelek awayên hilanîna nirxên çend qutiyên kontrolê di databasek li Laravel de hene. Li vir çend vebijark hene:
- Zeviyek celebek "boolean" bikar bînin : Her qutîka kontrolê dikare wekî "rast" an "derew" di nav zeviyek celebek boolean a databasa we de were tomar kirin.
- Zeviyek tîpa "text" bikar bînin : hûn dikarin nirxên hemî qutikên kontrolkirî di qadek tîpek nivîsê de hilînin, her nirxê bi komê veqetînin. Mînakî, heke bikarhêner qutikên "fêkî" û "zebze" kontrol kir, hûn dikarin van agahiyê wekî "fêkî, sebze" di navçeyek tîpek nivîsê de hilînin.
- Tabloyek pêwendiyê bikar bînin : Heke çend qutikên we yên kontrolê hene ku bi heman tomarê ve girêdayî ne, hûn dikarin tabloyek pêwendiyê bikar bînin da ku van daneyan hilînin. Mînakî, heke we tabloyek "hilberan" bi stûnek "kategorî" heye, hûn dikarin tabloyek "product_categories" biafirînin ku kategoriyên hilbijartî bi her hilberekê ve girêdide.
- Zeviyek tîpa "tablo" bikar bînin : Heke hûn danegehek bikar tînin ku rêzan piştgirî dike (mîna PostgreSQL), hûn dikarin nirxên çend qutiyên kontrolê di qadek celebek rêzê de hilînin. Ev ê dihêle hûn bêyî ku hûn tabloyek pêwendiyê bikar bînin gelek nirxan li yek zeviyek hilînin.
Tabloya naverokê
Gelek nirxên qutiya kontrolê bi karanîna arrayekê di databasek de hilînin
Di Laravel de, hûn dikarin çend nirxên qutiya kontrolê di danegehekê de bi karanîna arrayek bikar bînin da ku nirxan di yek zeviyê de hilînin. Li vir mînakek e ku hûn çawa dikarin wê bikin:
1. Koçek biafirînin da ku zeviyek li tabloya databasa xwe zêde bikin da ku nirxên qutiya kontrolê hilînin. Mînakî, heke hûn dixwazin nirxan li qada bi navê "vebijark" hilînin, hûn dikarin koça jêrîn bikar bînin:
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. Di forma xwe de, ji bo her vebijarkek ku hûn dixwazin hilînin qutikên kontrolê biafirînin. Bo nimûne :
<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. Di mantiqa pêvajoya radestkirina forma xwe de, nirxên qutiyên kontrolê yên hilbijartî bistînin û wan di databasê de hilînin. Bo nimûne :
$options = $request->input('options');
$model = new Model();
$model->options = json_encode($options);
$model->save();
Ev nirxên qutiyên kontrolê yên hilbijartî di qada "vebijarkan" de wekî rêzek kodkirî ya JSON tomar dike. Dûv re hûn dikarin bi deşîfrekirina rêzika JSON-ê dema ku hûn tomarê ji databasê vedigirin nirxên hilbijartî bistînin û nîşan bidin.
$model = Model::find($id);
$options = json_decode($model->options);
Nimûne kodên ku li Laravel gelek nirxên qutiya kontrolê hilînin
Li vir çend kodên nimûne hene ku ji bo hilanîna nirxên çend qutiyên kontrolê di databasek li Laravel de:
Zeviyek celebek "boolean" bikar bînin
Afirandina stûna "subscription_newsletter" di tabloya "bikarhêner" de:
Schema::table('utilisateurs', function (Blueprint $table) {
$table->boolean('abonnement_newsletter')->default(0);
});
Dema şandina formê qeydkirina abonetiya bikarhêner a nûçenameyê:
$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();
Zeviyek tîpa "text" bikar bînin
Afirandina stûna "options_sélectionées" ya tîpa nivîsê di tabloya "anket" de:
Schema::table('sondage', function (Blueprint $table) {
$table->text('options_sélectionnées');
});
Dema şandina formê vebijarkên hilbijartî yên bikarhêner hildibijêre:
$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();
Tabloyek pêwendiyê bikar bînin
Afirandina tabloya "categories_products" bi stûnên "id_product" û "id_category":
Schema::create('catégories_produits', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('id_produit');
$table->integer('id_catégorie');
$table->timestamps();
});
Dema şandina formê ji hêla bikarhêner ve hatî hilbijartin tomar kirin:
$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();
}
Zeviyek tîpa "tablo" bikar bînin
Afirandina stûna "options_selected" ya cureyê tabloyê di tabloya "anket" de (heke hûn PostgreSQL bikar bînin):
Schema::table('sondage', function (Blueprint $table) {
$table->jsonb('options_sélectionnées');
});
Dema şandina formê vebijarkên hilbijartî yên bikarhêner hildibijêre:
$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();
Girîng e ku hûn bala xwe bidinê ku, di her rewşê de, hûn ê hewce bikin ku berî ku li databasa xwe werin hilanîn, nirxên qutiya kontrolê bi rêkûpêk hatine pejirandin û paqij kirin. Hûn dikarin ji bo vê yekê kontrolkerên pejirandinê û parzûnên daneyê yên Laravel bikar bînin.