in ,

Kuinka tallentaa useiden valintaruutujen arvot tietokantaan Laravelissa?

Minun on tallennettava valintaruutujen arvot tietokantaan Laravelissa. Miten tehdä ?

Kuinka tallentaa useiden valintaruutujen arvot tietokantaan Laravelissa?
Kuinka tallentaa useiden valintaruutujen arvot tietokantaan Laravelissa?

On olemassa useita tapoja tallentaa useiden valintaruutujen arvot tietokantaan Laravelissa. Tässä on joitain vaihtoehtoja:

  1. Käytä "boolean"-tyyppistä kenttää : jokainen valintaruutu voidaan tallentaa tietokannassasi loogisen tyypin kenttään "true" tai "false".
  2. Käytä "teksti"-tyyppistä kenttää : voit tallentaa kaikkien valittujen valintaruutujen arvot tekstityyppikenttään erottamalla kunkin arvon pilkulla. Jos käyttäjä esimerkiksi valitsi "hedelmät" ja "vihannekset" -ruudut, voit tallentaa nämä tiedot tekstityyppikenttään nimellä "hedelmät, vihannekset".
  3. Käytä suhdetaulukkoa : jos sinulla on useita valintaruutuja, jotka on linkitetty samaan tietueeseen, voit tallentaa nämä tiedot relaatiotaulukon avulla. Jos sinulla on esimerkiksi "tuotteet"-taulukko, jossa on "categories"-sarake, voit luoda "product_categories"-taulukon, joka linkittää valitut luokat kuhunkin tuotteeseen.
  4. Käytä "taulukko"-tyyppistä kenttää : Jos käytät tietokantaa, joka tukee taulukoita (kuten PostgreSQL), voit tallentaa useiden valintaruutujen arvot taulukkotyyppikenttään. Näin voit tallentaa useita arvoja yhteen kenttään ilman suhdetaulukkoa.

Tallenna useita valintaruutujen arvoja tietokantaan taulukon avulla

Laravelissa voit tallentaa useita valintaruutujen arvoja tietokantaan käyttämällä taulukkoa tallentaaksesi arvot yhteen kenttään. Tässä on esimerkki siitä, kuinka voit tehdä sen:

1. Luo siirto lisätäksesi tietokantataulukkoon kentän valintaruutujen arvojen tallentamista varten. Jos esimerkiksi haluat tallentaa arvot kenttään nimeltä "asetukset", voit käyttää seuraavaa siirtoa:

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. Luo lomakkeessasi valintaruudut jokaiselle tallennettavalle vaihtoehdolle. Esimerkiksi :

<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. Hae lomakkeen lähetyksen käsittelylogiikassa valittujen valintaruutujen arvot ja tallenna ne tietokantaan. Esimerkiksi :

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

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

Tämä tallentaa valittujen valintaruutujen arvot "Options"-kenttään JSON-koodattuna taulukkona. Voit sitten noutaa ja näyttää valitut arvot purkamalla JSON-taulukon, kun haet tietueen tietokannasta.

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

Esimerkkikoodeja useiden valintaruutujen arvojen tallentamiseksi Laraveliin

Tässä on joitain esimerkkikoodeja useiden valintaruutujen arvojen tallentamiseen Laravelin tietokantaan:

Käytä "boolean"-tyyppistä kenttää

"Subscription_newsletter" boolean-sarakkeen luominen "käyttäjät"-taulukkoon:

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

Käyttäjän uutiskirjetilauksen rekisteröinti lomaketta lähetettäessä:

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

Käytä "teksti"-tyyppistä kenttää

Tekstityyppisen "options_sélectionées" -sarakkeen luominen "kysely"-taulukkoon:

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

Käyttäjän lomaketta lähetettäessä valitsemien vaihtoehtojen tallentaminen:

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

Käytä suhdetaulukkoa

Taulukon "categories_products" luominen sarakkeilla "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();
});

Käyttäjän lomaketta lähetettäessä valitsemien luokkien tallentaminen:

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

Käytä "taulukko"-tyyppistä kenttää

Taulukkotyyppisen sarakkeen "options_selected" luominen taulukkoon "poll" (jos käytät PostgreSQL:ää):

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

Käyttäjän lomaketta lähetettäessä valitsemien vaihtoehtojen tallentaminen:

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

On tärkeää huomata, että joka tapauksessa sinun on varmistettava, että valintaruutujen arvot on tarkistettu oikein ja puhdistettu ennen kuin ne tallennetaan tietokantaan. Voit käyttää tähän Laravelin validointiohjaimia ja tietosuodattimia.

[Kaikki yhteensä: 1 Tarkoittaa: 5]

Kirjoittanut Anton Gildebrand

Anton on täyspinon kehittäjä, joka intohimoisesti jakaa koodivinkkejä ja -ratkaisuja kollegoidensa ja kehittäjäyhteisön kanssa. Antonilla on vankka tausta- ja taustateknologioita, ja hän hallitsee useita ohjelmointikieliä ja -kehyksiä. Hän on aktiivinen jäsen online-kehittäjien foorumeilla ja antaa säännöllisesti ideoita ja ratkaisuja auttaakseen muita ratkaisemaan ohjelmointihaasteita. Vapaa-ajallaan Anton pysyy ajan tasalla alan uusimmista trendeistä ja teknologioista sekä kokeilee uusia työkaluja ja puitteita.

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Mitä mieltä olet?