in ,

Hogyan tárolhatunk több Checkbox értéket egy adatbázisban a Laravelben?

Tárolnom kell a jelölőnégyzet értékeit a Laravel adatbázisában. Hogyan kell csinálni ?

Hogyan tárolhatunk több Checkbox értéket egy adatbázisban a Laravelben?
Hogyan tárolhatunk több Checkbox értéket egy adatbázisban a Laravelben?

Többféle jelölőnégyzet értékét többféleképpen tárolhatja egy adatbázisban a Laravelben. Íme néhány lehetőség:

  1. Használjon „logikai” típusú mezőt : minden jelölőnégyzet "igaz" vagy "hamis" néven menthető el az adatbázis logikai típusú mezőjében.
  2. Használjon „szöveg” típusú mezőt : az összes bejelölt jelölőnégyzet értékét eltárolhatja egy szövegtípus mezőben, az egyes értékeket vesszővel elválasztva. Például, ha a felhasználó bejelölte a "gyümölcsök" és a "zöldségek" jelölőnégyzetet, ezeket az információkat "gyümölcsök, zöldségek" néven mentheti el egy szöveges mezőben.
  3. Használjon kapcsolati táblázatot : ha több jelölőnégyzet van ugyanahhoz a rekordhoz kapcsolva, akkor egy relációs táblát használhat az adatok tárolására. Például, ha van egy „termékek” táblázata „kategóriák” oszloppal, létrehozhat egy „product_categories” táblázatot, amely összekapcsolja a kiválasztott kategóriákat az egyes termékekkel.
  4. Használjon „tábla” típusú mezőt : Ha olyan adatbázist használ, amely támogatja a tömböket (például a PostgreSQL-t), akkor több jelölőnégyzet értékeit is tárolhatja egy tömbtípus mezőben. Ez lehetővé teszi több érték tárolását egyetlen mezőben anélkül, hogy kapcsolati táblázatot kellene használnia.

Tároljon több jelölőnégyzet értéket egy adatbázisban egy tömb segítségével

A Laravelben több jelölőnégyzet értéket is tárolhat egy adatbázisban úgy, hogy egy tömb segítségével egyetlen mezőben tárolja az értékeket. Íme egy példa, hogyan teheti meg:

1. Hozzon létre egy áttelepítést egy mező hozzáadásához az adatbázistáblához a jelölőnégyzetek értékeinek tárolására. Például, ha az értékeket egy "beállítások" nevű mezőben szeretné tárolni, használhatja a következő áttelepítést:

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. Az űrlapon hozzon létre jelölőnégyzeteket minden menteni kívánt opcióhoz. Például :

<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. Az űrlapbeküldés feldolgozási logikájában kérje le a kiválasztott jelölőnégyzetek értékeit, és tárolja azokat az adatbázisban. Például :

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

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

Ez JSON-kódolású tömbként tárolja a kiválasztott jelölőnégyzetek értékeit a „beállítások” mezőben. Ezután lekérheti és megjelenítheti a kiválasztott értékeket a JSON-tömb dekódolásával, amikor lekéri a rekordot az adatbázisból.

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

Mintakódok több jelölőnégyzet értékének tárolására a Laravelben

Íme néhány mintakód több jelölőnégyzet értékének tárolására a Laravel adatbázisban:

Használjon „logikai” típusú mezőt

A „subscription_newsletter” logikai oszlop létrehozása a „users” táblázatban:

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

A felhasználó hírlevélre való feliratkozásának regisztrációja az űrlap elküldésekor:

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

Használjon „szöveg” típusú mezőt

Az "options_sélectionées" szövegtípusú oszlop létrehozása a "felmérés" táblázatban:

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

A felhasználó által az űrlap elküldésekor kiválasztott opciók mentése:

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

Használjon kapcsolati táblázatot

A "categories_products" tábla létrehozása az "id_product" és az "id_category" oszlopokkal:

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

A felhasználó által az űrlap elküldésekor kiválasztott kategóriák mentése:

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

Használjon „tábla” típusú mezőt

Táblázat típusú "options_selected" oszlop létrehozása a "poll" táblában (ha PostgreSQL-t használ):

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

A felhasználó által az űrlap elküldésekor kiválasztott opciók mentése:

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

Fontos megjegyezni, hogy minden esetben meg kell győződnie arról, hogy a jelölőnégyzetek értékeit megfelelően ellenőrizték és kitisztították, mielőtt elmentenék őket az adatbázisba. Ehhez használhatja a Laravel érvényesítő vezérlőit és adatszűrőit.

[Teljes: 1 Átlagos: 5]

Írta Anton Gildebrand

Anton egy full stack fejlesztő, aki szenvedélyesen ossza meg kódtippjeit és megoldásait kollégáival és a fejlesztői közösséggel. Az előtér- és háttértechnológiák terén szilárd háttérrel rendelkező Anton jártas számos programozási nyelvben és keretrendszerben. Aktív tagja az online fejlesztői fórumoknak, és rendszeresen ad ötleteket és megoldásokat, hogy segítsen másoknak a programozási kihívások megoldásában. Szabadidejében Anton szívesen tájékozódik a terület legújabb trendjeiről és technológiáiról, valamint új eszközökkel és keretekkel kísérletezik.

Szólj hozzá

Az e-mail címed nem kerül nyilvánosságra. Kötelező kitölteni *

Mit gondolsz?