Có một số cách để lưu trữ giá trị của nhiều hộp kiểm trong cơ sở dữ liệu ở Laravel. Dưới đây là một số tùy chọn:
- Sử dụng trường loại “boolean” : mỗi hộp kiểm có thể được lưu là "true" hoặc "false" trong trường kiểu boolean trong cơ sở dữ liệu của bạn.
- Sử dụng trường loại "văn bản" : bạn có thể lưu trữ các giá trị của tất cả các hộp kiểm đã chọn trong một trường loại văn bản, phân tách từng giá trị bằng dấu phẩy. Ví dụ: nếu người dùng đã chọn hộp "trái cây" và "rau", bạn có thể lưu thông tin này dưới dạng "trái cây, rau" trong trường loại văn bản.
- Sử dụng bảng quan hệ : nếu bạn có nhiều hộp kiểm được liên kết với cùng một bản ghi, bạn có thể sử dụng bảng quan hệ để lưu trữ dữ liệu này. Ví dụ: nếu bạn có bảng "sản phẩm" có cột "danh mục", bạn có thể tạo bảng "danh mục sản phẩm" liên kết các danh mục đã chọn với từng sản phẩm.
- Sử dụng trường loại "bảng" : Nếu bạn đang sử dụng cơ sở dữ liệu hỗ trợ mảng (như PostgreSQL), bạn có thể lưu trữ giá trị của nhiều hộp kiểm trong một trường kiểu mảng. Điều này sẽ cho phép bạn lưu trữ nhiều giá trị trong một trường duy nhất mà không cần phải sử dụng bảng quan hệ.
Lưu trữ nhiều giá trị hộp kiểm trong cơ sở dữ liệu bằng một mảng
Trong Laravel, bạn có thể lưu trữ nhiều giá trị hộp kiểm trong cơ sở dữ liệu bằng cách sử dụng một mảng để lưu trữ các giá trị trong một trường duy nhất. Đây là một ví dụ về cách bạn có thể làm điều đó:
1. Tạo di chuyển để thêm một trường vào bảng cơ sở dữ liệu của bạn nhằm lưu trữ các giá trị hộp kiểm. Ví dụ: nếu bạn muốn lưu trữ các giá trị trong trường có tên là "tùy chọn", bạn có thể sử dụng cách di chuyển sau:
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. Trong biểu mẫu của bạn, hãy tạo các hộp kiểm cho mỗi tùy chọn mà bạn muốn lưu. Ví dụ :
<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. Trong logic xử lý gửi biểu mẫu của bạn, truy xuất các giá trị của các hộp kiểm đã chọn và lưu trữ chúng trong cơ sở dữ liệu. Ví dụ :
$options = $request->input('options');
$model = new Model();
$model->options = json_encode($options);
$model->save();
Điều này lưu trữ các giá trị của các hộp kiểm đã chọn trong trường "tùy chọn" dưới dạng một mảng được mã hóa JSON. Sau đó, bạn có thể truy xuất và hiển thị các giá trị đã chọn bằng cách giải mã mảng JSON khi bạn truy xuất bản ghi từ cơ sở dữ liệu.
$model = Model::find($id);
$options = json_decode($model->options);
Mã mẫu để lưu trữ nhiều giá trị hộp kiểm trong Laravel
Dưới đây là một số mã mẫu để lưu trữ các giá trị của nhiều hộp kiểm trong cơ sở dữ liệu ở Laravel:
Sử dụng trường loại “boolean”
Tạo cột boolean “subscription_newsletter” trong bảng “users”:
Schema::table('utilisateurs', function (Blueprint $table) {
$table->boolean('abonnement_newsletter')->default(0);
});
Đăng ký đăng ký nhận bản tin của người dùng khi gửi biểu mẫu:
$utilisateur = new Utilisateur;
$utilisateur->abonnement_newsletter = $request->input('abonnement_newsletter');
$utilisateur->save();
Sử dụng trường loại "văn bản"
Tạo cột "options_sélectionées" của loại văn bản trong bảng "khảo sát":
Schema::table('sondage', function (Blueprint $table) {
$table->text('options_sélectionnées');
});
Lưu các tùy chọn được người dùng chọn khi gửi biểu mẫu:
$sondage = new Sondage;
$sondage->options_sélectionnées = implode(',', $request->input('options'));
$sondage->save();
Sử dụng bảng quan hệ
Tạo bảng "category_products" với các cột "id_product" và "id_category":
Schema::create('catégories_produits', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('id_produit');
$table->integer('id_catégorie');
$table->timestamps();
});
Lưu danh mục do người dùng chọn khi gửi biểu mẫu:
$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();
}
Sử dụng trường loại "bảng"
Tạo cột "options_sered" của loại bảng trong bảng "thăm dò ý kiến" (nếu bạn sử dụng PostgreSQL):
Schema::table('sondage', function (Blueprint $table) {
$table->jsonb('options_sélectionnées');
});
Lưu các tùy chọn được người dùng chọn khi gửi biểu mẫu:
$sondage = new Sondage;
$sondage->options_sélectionnées = $request->input('options');
$sondage->save();
Điều quan trọng cần lưu ý là, trong mọi trường hợp, bạn sẽ cần đảm bảo rằng các giá trị hộp kiểm của mình được xác thực và làm sạch đúng cách trước khi lưu vào cơ sở dữ liệu của bạn. Bạn có thể sử dụng bộ điều khiển xác thực và bộ lọc dữ liệu của Laravel cho việc này.