in ,

Kuidas salvestada mitme märkeruudu väärtusi Laraveli andmebaasi?

Pean Laraveli andmebaasis märkeruutude väärtused salvestama. Kuidas teha ?

Kuidas salvestada mitme märkeruudu väärtusi Laraveli andmebaasi?
Kuidas salvestada mitme märkeruudu väärtusi Laraveli andmebaasi?

Mitme märkeruudu väärtuste salvestamiseks Laraveli andmebaasi on mitu võimalust. Siin on mõned valikud.

  1. Kasutage "tõve" tüüpi välja : iga märkeruudu saab salvestada andmebaasi tõeväärtuse tüüpi väljale kui "tõene" või "väär".
  2. Kasutage "teksti" tüüpi välja : saate salvestada kõigi märgitud märkeruutude väärtused tekstitüübi väljale, eraldades iga väärtuse komaga. Näiteks kui kasutaja märkis ruudud "puuviljad" ja "köögiviljad", saate selle teabe tekstitüübi väljale salvestada kui "puuviljad, köögiviljad".
  3. Kasutage seoste tabelit : kui teil on mitu märkeruutu, mis on lingitud sama kirjega, saate nende andmete salvestamiseks kasutada seoste tabelit. Näiteks kui teil on tabel "products" veeruga "categories", saate luua tabeli "product_categories", mis seob valitud kategooriad iga tootega.
  4. Kasutage "tabeli" tüüpi välja : Kui kasutate massiive toetavat andmebaasi (nt PostgreSQL), saate massiivitüübi väljale salvestada mitme märkeruudu väärtused. See võimaldab salvestada mitu väärtust ühele väljale ilma seosetabelit kasutamata.

Salvestage massiivi kasutades andmebaasi mitu märkeruudu väärtust

Laravelis saate salvestada andmebaasi mitu märkeruudu väärtust, kasutades väärtuste ühele väljale salvestamiseks massiivi. Siin on näide selle kohta, kuidas seda teha.

1. Looge migratsioon, et lisada oma andmebaasi tabelisse märkeruutude väärtuste salvestamiseks väli. Näiteks kui soovite salvestada väärtused väljale nimega "suvandid", saate kasutada järgmist migratsiooni:

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. Looge oma vormis märkeruudud iga valiku jaoks, mida soovite salvestada. Näiteks :

<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. Otsige oma vormi esitamise töötlemise loogikast valitud märkeruutude väärtused ja salvestage need andmebaasi. Näiteks :

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

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

See salvestab valitud märkeruutude väärtused väljale "suvandid" JSON-kodeeritud massiivina. Seejärel saate valitud väärtused tuua ja kuvada, dekodeerides JSON-massiivi, kui toote kirje andmebaasist alla.

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

Näidiskoodid mitme märkeruudu väärtuse salvestamiseks Laravelis

Siin on mõned näidiskoodid mitme märkeruudu väärtuste salvestamiseks Laraveli andmebaasi:

Kasutage "tõve" tüüpi välja

Tõeväärtuse veeru „subscription_newsletter” loomine tabelis „users”:

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

Kasutaja uudiskirjaga liitumise registreerimine vormi esitamisel:

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

Kasutage "teksti" tüüpi välja

Tabelis "Uuring" tekstitüübi veeru "options_sélectionées" loomine:

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

Kasutaja poolt vormi esitamisel valitud valikute salvestamine:

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

Kasutage seoste tabelit

Tabeli "categories_products" loomine veergudega "id_product" ja "id_category":

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

Kasutaja poolt vormi esitamisel valitud kategooriate salvestamine:

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

Kasutage "tabeli" tüüpi välja

Tabelitüübiga veeru "options_selected" loomine tabelis "poll" (kui kasutate PostgreSQL-i):

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

Kasutaja poolt vormi esitamisel valitud valikute salvestamine:

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

Oluline on märkida, et igal juhul peate enne andmebaasi salvestamist veenduma, et teie märkeruutude väärtused on korralikult kinnitatud ja puhastatud. Selleks saate kasutada Laraveli valideerimiskontrollereid ja andmefiltreid.

[Kokku: 1 Tähendab: 5]

Kirjutatud Anton Gildebrand

Anton on täispunt arendaja, kes jagab kirglikult koodinõuandeid ja -lahendusi oma kolleegide ja arendajate kogukonnaga. Oma esi- ja tagatehnoloogiate tugeva taustaga Anton valdab erinevaid programmeerimiskeeli ja -raamistikke. Ta on aktiivne veebiarendajate foorumite liige ning annab regulaarselt ideid ja lahendusi, et aidata teistel programmeerimisprobleeme lahendada. Vabal ajal meeldib Antonile olla kursis valdkonna uusimate trendide ja tehnoloogiatega ning katsetada uute tööriistade ja raamistikega.

Jäta kommentaar

Teie e-posti aadressi ei avaldata. Kohustuslikud väljad on märgitud *

Mis sa arvad?