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í:
- 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.
- 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.
- 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.
- 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ů.
Obsah
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.