Istnieje kilka sposobów przechowywania wartości wielu pól wyboru w bazie danych w Laravel. Oto kilka opcji:
- Użyj pola typu „boolean”. : każde pole wyboru można zapisać jako „prawda” lub „fałsz” w polu typu boolowskiego w bazie danych.
- Użyj pola typu „tekst”. : możesz przechowywać wartości wszystkich zaznaczonych pól wyboru w polu typu tekstowego, oddzielając każdą wartość przecinkiem. Na przykład, jeśli użytkownik zaznaczył pola „owoce” i „warzywa”, możesz zapisać te informacje jako „owoce, warzywa” w polu tekstowym.
- Użyj tabeli relacji : jeśli masz kilka pól wyboru, które są połączone z tym samym rekordem, możesz użyć tabeli relacji do przechowywania tych danych. Na przykład, jeśli masz tabelę „produkty” z kolumną „kategorie”, możesz utworzyć tabelę „kategorie_produktów”, która łączy wybrane kategorie z każdym produktem.
- Użyj pola typu „tabela”. : Jeśli używasz bazy danych obsługującej tablice (takiej jak PostgreSQL), możesz przechowywać wartości wielu pól wyboru w polu typu tablicowego. Umożliwi to przechowywanie wielu wartości w jednym polu bez konieczności korzystania z tabeli relacji.
Spis treści
Przechowuj wiele wartości pól wyboru w bazie danych za pomocą tablicy
W Laravel możesz przechowywać wiele wartości pól wyboru w bazie danych, używając tablicy do przechowywania wartości w jednym polu. Oto przykład, jak możesz to zrobić:
1. Utwórz migrację, aby dodać pole do tabeli bazy danych do przechowywania wartości pól wyboru. Na przykład, jeśli chcesz przechowywać wartości w polu o nazwie „opcje”, możesz skorzystać z następującej migracji:
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. W formularzu utwórz pola wyboru dla każdej opcji, którą chcesz zapisać. Na przykład :
<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. W swojej logice przetwarzania wysyłania formularza pobierz wartości zaznaczonych pól wyboru i zapisz je w bazie danych. Na przykład :
$options = $request->input('options');
$model = new Model();
$model->options = json_encode($options);
$model->save();
To przechowuje wartości wybranych pól wyboru w polu „opcje” jako tablicę zakodowaną w formacie JSON. Następnie możesz pobrać i wyświetlić wybrane wartości, dekodując tablicę JSON podczas pobierania rekordu z bazy danych.
$model = Model::find($id);
$options = json_decode($model->options);
Przykładowe kody do przechowywania wielu wartości pól wyboru w Laravel
Oto kilka przykładowych kodów do przechowywania wartości wielu pól wyboru w bazie danych w Laravel:
Użyj pola typu „boolean”.
Utworzenie kolumny boolowskiej „subscription_newsletter” w tabeli „users”:
Schema::table('utilisateurs', function (Blueprint $table) {
$table->boolean('abonnement_newsletter')->default(0);
});
Rejestracja zapisu użytkownika do newslettera podczas przesyłania formularza:
$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();
Użyj pola typu „tekst”.
Utworzenie kolumny „options_sélectionées” typu tekstowego w tabeli „ankieta”:
Schema::table('sondage', function (Blueprint $table) {
$table->text('options_sélectionnées');
});
Zapamiętanie opcji wybranych przez użytkownika podczas składania formularza:
$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();
Użyj tabeli relacji
Tworzenie tabeli „categories_products” z kolumnami „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();
});
Zapisywanie kategorii wybranych przez użytkownika podczas wysyłania formularza:
$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();
}
Użyj pola typu „tabela”.
Utworzenie kolumny „options_selected” typu table w tabeli „poll” (jeśli korzystasz z PostgreSQL):
Schema::table('sondage', function (Blueprint $table) {
$table->jsonb('options_sélectionnées');
});
Zapamiętanie opcji wybranych przez użytkownika podczas składania formularza:
$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();
Ważne jest, aby pamiętać, że w każdym przypadku musisz upewnić się, że wartości pól wyboru są odpowiednio zweryfikowane i wyczyszczone przed zapisaniem w bazie danych. Możesz do tego użyć kontrolerów walidacji i filtrów danych Laravel.