in ,

Meriv çawa çend nirxên Checkbox-ê di databasek Laravel de hilîne?

Pêdivî ye ku ez nirxên qutiyê li databasê li Laravel hilînim. Çawa kirin ?

Meriv çawa çend nirxên Checkbox-ê di databasek Laravel de hilîne?
Meriv çawa çend nirxên Checkbox-ê di databasek Laravel de hilîne?

Gelek awayên hilanîna nirxên çend qutiyên kontrolê di databasek li Laravel de hene. Li vir çend vebijark hene:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

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.

[Hemî: 1 Dilxerab: 5]

nivîskar: Anton Gildebrand

Anton pêşdebirek tam stackê ye ku ji parvekirina serişte û çareseriyên kodê bi hevkarên xwe û civata pêşdebir re dilşewat e. Di teknolojiyên pêş-end û paşîn de paşverokek zexm, Anton di cûrbecûr ziman û çarçoweyên bernamesaziyê de jêhatî ye. Ew endamek çalak a forumên pêşdebirên serhêl e û bi rêkûpêk bi raman û çareseriyan beşdar dibe da ku alîkariya kesên din bike ku pirsgirêkên bernamekirinê çareser bikin. Di dema xwe ya vala de, Anton kêfxweş e ku li ser meyl û teknolojiyên herî dawî yên li qadê rojane bimîne û bi amûr û çarçoveyên nû ceribandine.

Leave a comment

Navnîşana e-nameya we nayê weşandin. qadên pêwîst in *

Hûn çi difikirin?

387 Points
Upvote Downvote