Има няколко начина за съхраняване на стойностите на множество отметки в база данни в Laravel. Ето някои опции:
- Използвайте поле тип „булев“. : всяко квадратче за отметка може да бъде запазено като „true“ или „false“ в поле от булев тип във вашата база данни.
- Използвайте поле тип „текст“. : можете да съхранявате стойностите на всички отметнати квадратчета в текстово поле, като разделяте всяка стойност със запетая. Например, ако потребителят е поставил отметка в полетата „плодове“ и „зеленчуци“, можете да запазите тази информация като „плодове, зеленчуци“ в текстово поле.
- Използвайте таблица за отношения : ако имате няколко квадратчета за отметка, които са свързани към един и същ запис, можете да използвате таблица за релации, за да съхранявате тези данни. Например, ако имате таблица „products“ с колона „categories“, можете да създадете таблица „product_categories“, която свързва избраните категории с всеки продукт.
- Използвайте поле тип „таблица“. : Ако използвате база данни, която поддържа масиви (като PostgreSQL), можете да съхранявате стойностите на множество квадратчета за отметка в поле за тип масив. Това ще ви позволи да съхранявате множество стойности в едно поле, без да се налага да използвате таблица за релации.
Съдържание
Съхранявайте множество стойности на полето за отметка в база данни с помощта на масив
В Laravel можете да съхранявате множество стойности на квадратчета за отметка в база данни, като използвате масив за съхраняване на стойностите в едно поле. Ето пример как можете да го направите:
1. Създайте миграция, за да добавите поле към таблицата на вашата база данни, за да съхранявате стойности на полето за отметка. Например, ако искате да съхраните стойностите в поле, наречено „опции“, можете да използвате следната миграция:
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. Във вашия формуляр създайте квадратчета за отметка за всяка опция, която искате да запазите. Например :
<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. В логиката за обработка на подаването на вашия формуляр извлечете стойностите на избраните квадратчета за отметка и ги запазете в базата данни. Например :
$options = $request->input('options');
$model = new Model();
$model->options = json_encode($options);
$model->save();
Това съхранява стойностите на избраните квадратчета за отметка в полето „опции“ като JSON кодиран масив. След това можете да извлечете и покажете избраните стойности чрез декодиране на JSON масива, когато извлечете записа от базата данни.
$model = Model::find($id);
$options = json_decode($model->options);
Примерни кодове за съхраняване на множество стойности на полета за отметка в Laravel
Ето някои примерни кодове за съхраняване на стойностите на множество отметки в база данни в Laravel:
Използвайте поле тип „булев“.
Създаване на булева колона „subscription_newsletter“ в таблицата „users“:
Schema::table('utilisateurs', function (Blueprint $table) {
$table->boolean('abonnement_newsletter')->default(0);
});
Регистрация на абонамента на потребителя за бюлетина при подаване на формуляра:
$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();
Използвайте поле тип „текст“.
Създаване на колона „options_sélectionées“ от тип текст в таблицата „анкета“:
Schema::table('sondage', function (Blueprint $table) {
$table->text('options_sélectionnées');
});
Запазване на опциите, избрани от потребителя при подаване на формуляра:
$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();
Използвайте таблица за отношения
Създаване на таблица "categories_products" с колони "id_product" и "id_category":
Schema::create('catégories_produits', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('id_produit');
$table->integer('id_catégorie');
$table->timestamps();
});
Запазване на категории, избрани от потребителя при подаване на формуляра:
$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();
}
Използвайте поле тип „таблица“.
Създаване на колона "options_selected" от тип таблица в таблицата "poll" (ако използвате PostgreSQL):
Schema::table('sondage', function (Blueprint $table) {
$table->jsonb('options_sélectionnées');
});
Запазване на опциите, избрани от потребителя при подаване на формуляра:
$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();
Важно е да се отбележи, че във всеки случай ще трябва да се уверите, че стойностите на полето за отметка са правилно валидирани и почистени, преди да бъдат запазени във вашата база данни. Можете да използвате контролерите за валидиране и филтрите за данни на Laravel за това.