in ,

Kako pohraniti višestruke vrijednosti polja za potvrdu u bazi podataka u Laravelu?

Trebam pohraniti vrijednosti polja za potvrdu u bazi podataka u Laravel. Kako to učiniti ?

Kako pohraniti višestruke vrijednosti polja za potvrdu u bazi podataka u Laravelu?
Kako pohraniti višestruke vrijednosti polja za potvrdu u bazi podataka u Laravelu?

Postoji nekoliko načina za pohranjivanje vrijednosti višestrukih okvira za potvrdu u bazi podataka u Laravelu. Evo nekoliko opcija:

  1. Koristite polje tipa „boolean“. : svaki potvrdni okvir može biti sačuvan kao "true" ili "false" u polju boolean tipa u vašoj bazi podataka.
  2. Koristite polje tipa „tekst“. : možete pohraniti vrijednosti svih označenih potvrdnih okvira u polje tipa teksta, odvajajući svaku vrijednost zarezom. Na primjer, ako je korisnik označio polja "voće" i "povrće", ove informacije možete sačuvati kao "voće, povrće" u polju za tekst.
  3. Koristite tabelu odnosa : ako imate nekoliko potvrdnih okvira koji su povezani s istim zapisom, možete koristiti tabelu odnosa za pohranjivanje ovih podataka. Na primjer, ako imate tablicu "proizvodi" sa stupcem "kategorije", možete kreirati tablicu "product_categories" koja povezuje odabrane kategorije sa svakim proizvodom.
  4. Koristite polje tipa „tabela“. : Ako koristite bazu podataka koja podržava nizove (kao što je PostgreSQL), možete pohraniti vrijednosti višestrukih okvira za potvrdu u polje tipa niza. Ovo će vam omogućiti da pohranite više vrijednosti u jednom polju bez potrebe da koristite tablicu odnosa.

Pohranite višestruke vrijednosti polja za potvrdu u bazu podataka koristeći niz

U Laravelu možete pohraniti višestruke vrijednosti okvira za potvrdu u bazu podataka koristeći niz za pohranjivanje vrijednosti u jednom polju. Evo primjera kako to možete učiniti:

1. Kreirajte migraciju da dodate polje u vašu tablicu baze podataka za pohranjivanje vrijednosti polja za potvrdu. Na primjer, ako želite pohraniti vrijednosti u polje koje se zove "opcije", možete koristiti sljedeću migraciju:

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. U svom obrascu napravite potvrdne okvire za svaku opciju koju želite da sačuvate. Na primjer :

<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. U svojoj logici obrade podnošenja obrasca, dohvatite vrijednosti odabranih potvrdnih okvira i pohranite ih u bazu podataka. Na primjer :

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

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

Ovo pohranjuje vrijednosti odabranih potvrdnih okvira u polju "opcije" kao JSON kodirani niz. Zatim možete dohvatiti i prikazati odabrane vrijednosti dekodiranjem JSON niza kada preuzmete zapis iz baze podataka.

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

Primjer kodova za pohranjivanje višestrukih vrijednosti polja za potvrdu u Laravel

Evo nekoliko primjera kodova za pohranjivanje vrijednosti višestrukih okvira za potvrdu u bazi podataka u Laravelu:

Koristite polje tipa „boolean“.

Kreiranje logičke kolone “subscription_newsletter” u tabeli “users”:

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

Registracija pretplate korisnika na newsletter prilikom slanja obrasca:

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

Koristite polje tipa „tekst“.

Kreiranje stupca "options_sélectionées" tipa teksta u tabeli "anketa":

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

Pohranjivanje opcija koje je korisnik izabrao prilikom slanja obrasca:

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

Koristite tabelu odnosa

Kreiranje tabele "categories_products" sa stupcima "id_product" i "id_category":

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

Pohranjivanje kategorija koje je korisnik izabrao prilikom slanja obrasca:

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

Koristite polje tipa „tabela“.

Kreiranje kolone "options_selected" tipa tabele u tabeli "poll" (ako koristite PostgreSQL):

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

Pohranjivanje opcija koje je korisnik izabrao prilikom slanja obrasca:

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

Važno je napomenuti da ćete, u svakom slučaju, morati osigurati da su vrijednosti u polju za potvrdu ispravno potvrđene i očišćene prije nego što se pohrane u vašu bazu podataka. Za ovo možete koristiti Laravel kontrolere validacije i filtere podataka.

[Ukupno: 1 znači: 5]

Napisao Anton Gildebrand

Anton je full stack programer koji strastveno dijeli savjete i rješenja koda sa svojim kolegama i zajednicom programera. Sa solidnom pozadinom u front-end i back-end tehnologijama, Anton je vješt u raznim programskim jezicima i okvirima. Aktivan je član online foruma za programere i redovno doprinosi idejama i rješenjima kako bi pomogao drugima u rješavanju programskih izazova. U slobodno vrijeme Anton uživa u informiranju o najnovijim trendovima i tehnologijama u ovoj oblasti i eksperimentiranju s novim alatima i okvirima.

Ostavite komentar

Vaša adresa e-pošte neće biti objavljena. Obavezna polja su označena *

Šta ti misliš?

387 Points
Upvote Downvote