in ,

Jak uložit více hodnot Checkboxu do databáze v Laravelu?

Potřebuji uložit hodnoty zaškrtávacích políček do databáze v Laravelu. Jak to udělat ?

Jak uložit více hodnot Checkboxu do databáze v Laravelu?
Jak uložit více hodnot Checkboxu do databáze v Laravelu?

Existuje několik způsobů, jak uložit hodnoty více zaškrtávacích políček v databázi v Laravelu. Zde je několik možností:

  1. Použijte pole typu „boolean“. : každé zaškrtávací políčko lze uložit jako „true“ nebo „false“ do pole typu boolean ve vaší databázi.
  2. Použijte pole typu „text“. : hodnoty všech zaškrtnutých políček můžete uložit do textového pole a každou hodnotu oddělit čárkou. Pokud například uživatel zaškrtl políčka „ovoce“ a „zelenina“, můžete tyto informace uložit jako „ovoce, zelenina“ do textového pole.
  3. Použijte tabulku vztahů : pokud máte několik zaškrtávacích políček, která jsou propojena se stejným záznamem, můžete k uložení těchto dat použít relační tabulku. Pokud máte například tabulku „produkty“ se sloupcem „kategorie“, můžete vytvořit tabulku „kategorie_produktu“, která propojí vybrané kategorie s každým produktem.
  4. Použijte pole typu „tabulka“. : Pokud používáte databázi, která podporuje pole (jako PostgreSQL), můžete uložit hodnoty více zaškrtávacích políček do pole typu pole. To vám umožní uložit více hodnot do jednoho pole, aniž byste museli používat tabulku vztahů.

Uložte více hodnot zaškrtávacích políček do databáze pomocí pole

V Laravelu můžete uložit více hodnot zaškrtávacích políček do databáze pomocí pole k uložení hodnot do jednoho pole. Zde je příklad, jak to můžete udělat:

1. Vytvořte migraci a přidejte do databázové tabulky pole pro uložení hodnot zaškrtávacích políček. Pokud například chcete uložit hodnoty do pole s názvem „možnosti“, můžete použít následující migraci:

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. Ve formuláři vytvořte zaškrtávací políčka pro každou možnost, kterou chcete uložit. Například :

<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. V logice zpracování odeslání formuláře načtěte hodnoty vybraných zaškrtávacích políček a uložte je do databáze. Například :

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

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

Tím se uloží hodnoty vybraných zaškrtávacích políček do pole „možnosti“ jako pole kódované JSON. Poté můžete načíst a zobrazit vybrané hodnoty dekódováním pole JSON při načítání záznamu z databáze.

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

Ukázkové kódy pro uložení více hodnot zaškrtávacích políček v Laravelu

Zde je několik ukázkových kódů pro ukládání hodnot více zaškrtávacích políček v databázi v Laravelu:

Použijte pole typu „boolean“.

Vytvoření booleovského sloupce „subscription_newsletter“ v tabulce „users“:

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

Registrace přihlášení uživatele k odběru newsletteru při odeslání formuláře:

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

Použijte pole typu „text“.

Vytvoření sloupce "options_sélectionées" typu textu v tabulce "průzkum":

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

Uložení možností vybraných uživatelem při odesílání formuláře:

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

Použijte tabulku vztahů

Vytvoření tabulky "categories_products" se sloupci "id_product" a "id_category":

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

Ukládání kategorií vybraných uživatelem při odesílání formuláře:

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

Použijte pole typu „tabulka“.

Vytvoření sloupce "options_selected" typu tabulky v tabulce "poll" (pokud používáte PostgreSQL):

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

Uložení možností vybraných uživatelem při odesílání formuláře:

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

Je důležité si uvědomit, že v každém případě budete muset před uložením do databáze zajistit, aby byly hodnoty zaškrtávacích polí řádně ověřeny a vyčištěny. K tomu můžete použít ověřovací ovladače Laravel a datové filtry.

[Celkový: 1 Znamenat: 5]

Napsáno Anton Gildebrand

Anton je full stack vývojář s vášní pro sdílení tipů a kódových řešení se svými kolegy a vývojářskou komunitou. Díky solidnímu zázemí v oblasti front-end a back-end technologií je Anton zběhlý v různých programovacích jazycích a rámcích. Je aktivním členem online vývojářských fór a pravidelně přispívá nápady a řešeními, která pomáhají ostatním řešit problémy s programováním. Ve svém volném čase Anton rád sleduje nejnovější trendy a technologie v oboru a experimentuje s novými nástroji a frameworky.

Zanechat komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

Co si myslíte?

387 Body
Upvote Dolů