in ,

Ki jan yo estoke valè plizyè kaz nan yon baz done nan Laravel?

Mwen bezwen sere valè kaz nan baz done nan Laravel. Ki jan fè?

Ki jan yo estoke valè plizyè kaz nan yon baz done nan Laravel?
Ki jan yo estoke valè plizyè kaz nan yon baz done nan Laravel?

Gen plizyè fason pou estoke valè kaz miltip nan yon baz done nan Laravel. Men kèk opsyon:

  1. Sèvi ak yon jaden kalite "boolean". : yo ka sove chak kare kòm "vrè" oswa "fo" nan yon jaden kalite boolean nan baz done w la.
  2. Sèvi ak yon jaden ki kalite "tèks". : ou ka estoke valè tout kaz yo tcheke nan yon jaden kalite tèks, separe chak valè ak yon vigil. Pou egzanp, si itilizatè a tcheke bwat "fwi" ak "legim" yo, ou ka sove enfòmasyon sa a kòm "fwi, legim" nan yon jaden kalite tèks.
  3. Sèvi ak yon tab relasyon : si ou gen plizyè kaz ki lye ak menm dosye a, ou ka itilize yon tablo relasyon pou estoke done sa yo. Pa egzanp, si ou gen yon tab "pwodwi" ak yon kolòn "kategori", ou ka kreye yon tab "product_categories" ki konekte kategori yo chwazi a chak pwodwi.
  4. Sèvi ak yon jaden ki kalite "tab". : Si w ap itilize yon baz done ki sipòte etalaj (tankou PostgreSQL), ou ka estoke valè kaz miltip yo nan yon jaden kalite etalaj. Sa a pral pèmèt ou estoke plizyè valè nan yon sèl jaden san yo pa bezwen sèvi ak yon tab relasyon.

Sere plizyè valè kaz nan yon baz done lè l sèvi avèk yon etalaj

Nan Laravel, ou ka estoke plizyè valè kaz nan yon baz done lè w itilize yon etalaj pou estoke valè yo nan yon sèl jaden. Men yon egzanp sou fason ou ka fè li:

1. Kreye yon migrasyon pou ajoute yon jaden nan tab baz done w la pou konsève valè kaz. Pou egzanp, si ou vle estoke valè yo nan yon jaden ki rele "opsyon", ou ka itilize migrasyon sa a:

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. Nan fòm ou a, kreye kaz pou chak opsyon ou vle sove. Pa egzanp :

<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. Nan lojik pwosesis soumèt fòm ou a, rekipere valè kaz yo chwazi yo epi estoke yo nan baz done a. Pa egzanp :

$options = $request->input('options');

$model = new Model();
$model->options = json_encode($options);
$model->save();

Sa a estoke valè kaz yo chwazi nan jaden "opsyon yo" kòm yon etalaj JSON kode. Lè sa a, ou ka rekipere ak montre valè yo chwazi lè w dekode etalaj JSON la lè ou rekipere dosye a nan baz done a.

$model = Model::find($id);
$options = json_decode($model->options);

Egzanp kòd pou estoke plizyè valè kaz nan Laravel

Men kèk echantiyon kòd pou estoke valè kaz miltip nan yon baz done nan Laravel:

Sèvi ak yon jaden kalite "boolean".

Kreyasyon kolòn boolean "subscription_newsletter" nan tablo "itilizatè" yo:

Schema::table('utilisateurs', function (Blueprint $table) {
    $table->boolean('abonnement_newsletter')->default(0);
});

Enskripsyon nan abònman itilizatè a nan bilten an lè w ap soumèt fòm nan:

$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();

Sèvi ak yon jaden ki kalite "tèks".

Kreyasyon kolòn "options_sélectionées" kalite tèks nan tablo "sondaj" la:

Schema::table('sondage', function (Blueprint $table) {
    $table->text('options_sélectionnées');
});

Sove opsyon itilizatè a chwazi lè w ap soumèt fòm lan:

$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();

Sèvi ak yon tab relasyon

Kreyasyon tab "categories_products" ak kolòn "id_product" ak "id_category":

Schema::create('catégories_produits', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->integer('id_produit');
    $table->integer('id_catégorie');
    $table->timestamps();
});

Ekonomize kategori itilizatè a chwazi lè w ap soumèt fòm lan:

$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();
}

Sèvi ak yon jaden ki kalite "tab".

Kreyasyon kolòn "options_selected" nan kalite tab nan tablo "poll" (si ou itilize PostgreSQL):

Schema::table('sondage', function (Blueprint $table) {
    $table->jsonb('options_sélectionnées');
});

Sove opsyon itilizatè a chwazi lè w ap soumèt fòm lan:

$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();

Li enpòtan sonje ke, nan nenpòt ka, ou pral bezwen asire ke valè kaz ou yo byen valide ak netwaye anvan yo te sove nan baz done ou a. Ou ka itilize kontwolè validation Laravel ak filtè done pou sa.

[Total: 1 vle di: 5]

Ekri pa Anton Gildebrand

Anton se yon devlopè konplè pasyone sou pataje konsèy kòd ak solisyon ak kòlèg li yo ak kominote a devlopè. Avèk yon background solid nan teknoloji front-end ak back-end, Anton konpetan nan yon varyete langaj pwogramasyon ak kad. Li se yon manm aktif nan fowòm pwomotè sou entènèt e li regilyèman kontribye lide ak solisyon pou ede lòt moun rezoud defi pwogramasyon yo. Nan tan rezèv li, Anton renmen rete ajou sou dènye tandans ak teknoloji nan domèn nan epi fè eksperyans ak nouvo zouti ak kad.

Kite yon kòmantè

Adrès imèl ou pa pral pibliye. Jaden obligatwa yo make *

Ki sa ou panse?