in ,

Làm cách nào để lưu trữ các giá trị của một số Hộp kiểm trong cơ sở dữ liệu ở Laravel?

Tôi cần lưu trữ các giá trị hộp kiểm trong cơ sở dữ liệu trong Laravel. Làm thế nào để làm gì?

Làm cách nào để lưu trữ các giá trị của một số Hộp kiểm trong cơ sở dữ liệu ở Laravel?
Làm cách nào để lưu trữ các giá trị của một số Hộp kiểm trong cơ sở dữ liệu ở Laravel?

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

[Toàn bộ: 1 Bần tiện: 5]

Được viết bởi Anton Gildebrand

Anton là một nhà phát triển toàn diện đam mê chia sẻ các mẹo và giải pháp mã với các đồng nghiệp của mình và cộng đồng nhà phát triển. Với nền tảng vững chắc về công nghệ front-end và back-end, Anton thành thạo nhiều ngôn ngữ lập trình và framework. Anh là thành viên tích cực của các diễn đàn lập trình viên trực tuyến và thường xuyên đóng góp các ý tưởng và giải pháp để giúp người khác giải quyết các thách thức về lập trình. Trong thời gian rảnh rỗi, Anton thích cập nhật các xu hướng và công nghệ mới nhất trong lĩnh vực này cũng như thử nghiệm các công cụ và khuôn khổ mới.

Để lại một bình luận

Địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *

Bạn nghĩ gì?

387 Điểm
Upvote Downvote