in ,

Kaip Laravel duomenų bazėje išsaugoti kelias žymimųjų laukelių reikšmes?

Man reikia saugoti žymės langelio reikšmes Laravel duomenų bazėje. Kaip daryti?

Kaip Laravel duomenų bazėje išsaugoti kelias žymimųjų laukelių reikšmes?
Kaip Laravel duomenų bazėje išsaugoti kelias žymimųjų laukelių reikšmes?

Yra keletas būdų, kaip Laravel duomenų bazėje išsaugoti kelių žymimųjų laukelių reikšmes. Štai keletas parinkčių:

  1. Naudokite „bulio“ tipo lauką : kiekvienas žymimasis laukelis gali būti išsaugotas kaip „teisinga“ arba „klaidinga“ jūsų duomenų bazės loginio tipo lauke.
  2. Naudokite „teksto“ tipo lauką : galite išsaugoti visų pažymėtų žymimųjų laukelių reikšmes teksto tipo lauke, kiekvieną reikšmę atskirdami kableliu. Pavyzdžiui, jei vartotojas pažymėjo langelius „vaisiai“ ir „daržovės“, šią informaciją galite įrašyti kaip „vaisiai, daržovės“ teksto tipo lauke.
  3. Naudokite santykių lentelę : jei turite kelis žymimuosius laukelius, susietus su tuo pačiu įrašu, šiems duomenims saugoti galite naudoti ryšių lentelę. Pavyzdžiui, jei turite lentelę „products“ su stulpeliu „kategorijos“, galite sukurti lentelę „product_categories“, kuri susieja pasirinktas kategorijas su kiekvienu produktu.
  4. Naudokite „lentelės“ tipo lauką : Jei naudojate duomenų bazę, kuri palaiko masyvus (pvz., PostgreSQL), masyvo tipo lauke galite išsaugoti kelių žymimųjų laukelių reikšmes. Tai leis jums išsaugoti kelias reikšmes viename lauke nenaudojant ryšių lentelės.

Išsaugokite kelias žymimųjų laukelių reikšmes duomenų bazėje naudodami masyvą

„Laravel“ duomenų bazėje galite išsaugoti kelias žymės langelių reikšmes, naudodami masyvą, kad išsaugotumėte reikšmes viename lauke. Štai pavyzdys, kaip galite tai padaryti:

1. Sukurkite perkėlimą, kad į duomenų bazės lentelę įtrauktumėte lauką, kuriame būtų saugomos žymimųjų laukelių reikšmės. Pavyzdžiui, jei norite išsaugoti reikšmes lauke, pavadintame „parinktys“, galite naudoti šį perkėlimą:

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. Formoje sukurkite kiekvienos parinkties, kurią norite išsaugoti, žymimuosius laukelius. Pavyzdžiui :

<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. Formos pateikimo apdorojimo logikoje nuskaitykite pasirinktų žymimųjų laukelių reikšmes ir išsaugokite jas duomenų bazėje. Pavyzdžiui :

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

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

Taip išsaugomos pasirinktų žymimųjų laukelių reikšmės lauke „parinktys“ kaip JSON užkoduotas masyvas. Tada galite nuskaityti ir parodyti pasirinktas reikšmes, dekoduodami JSON masyvą, kai nuskaitote įrašą iš duomenų bazės.

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

Pavyzdiniai kodai, skirti kelioms žymimųjų laukelių reikšmėms saugoti Laravel

Štai keletas pavyzdinių kodų, skirtų kelių žymimųjų langelių reikšmėms saugoti Laravel duomenų bazėje:

Naudokite „bulio“ tipo lauką

Loginio stulpelio „subscription_newsletter“ sukūrimas „vartotojų“ lentelėje:

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

Vartotojo naujienlaiškio prenumeratos registracija pateikiant formą:

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

Naudokite „teksto“ tipo lauką

Teksto tipo stulpelio "options_sélectionées" sukūrimas "apklausos" lentelėje:

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

Išsaugokite parinktis, kurias pasirinko vartotojas pateikiant formą:

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

Naudokite santykių lentelę

Lentelės „categories_products“ su stulpeliais „id_product“ ir „id_category“ sukūrimas:

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

Išsaugomos kategorijos, kurias vartotojas pasirinko pateikdamas formą:

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

Naudokite „lentelės“ tipo lauką

Masyvo tipo stulpelio "options_selected" sukūrimas "apklausos" lentelėje (jei naudojate PostgreSQL):

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

Išsaugokite parinktis, kurias pasirinko vartotojas pateikiant formą:

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

Svarbu pažymėti, kad bet kuriuo atveju turėsite įsitikinti, kad jūsų žymimojo laukelio reikšmės yra tinkamai patvirtintos ir išvalytos prieš išsaugant jas duomenų bazėje. Tam galite naudoti Laravel patvirtinimo valdiklius ir duomenų filtrus.

[Iš viso: 1 Reiškia: 5]

Parašyta Antonas Gildebrandas

Antonas yra visapusiškas kūrėjas, aistringas dalytis patarimais ir kodo sprendimais su savo kolegomis ir kūrėjų bendruomene. Turėdamas tvirtą priekinių ir galinių technologijų pagrindą, Antonas puikiai išmano įvairias programavimo kalbas ir sistemas. Jis yra aktyvus internetinių kūrėjų forumų narys ir nuolat teikia idėjų bei sprendimų, padedančių kitiems spręsti programavimo iššūkius. Laisvalaikiu Antonas mėgsta sekti naujausias tendencijas ir technologijas šioje srityje bei eksperimentuoti su naujais įrankiais ir sistemomis.

Komentuoti

Jūsų el. Pašto adresas nebus paskelbtas. Privalomi laukai yra pažymėti *

Ką manote?

387 Kredito taškai
Aukštyn Perkelti