Còn ý tưởng lưu trữ UUID 36chr dưới dạng Binary (16) này thì sao:
IMO có một lợi thế khi Laravel không tạo UUID . Cụ thể, nếu các bản ghi mới (một ngày nào đó trong tương lai) được chèn vào cơ sở dữ liệu từ bên ngoài ứng dụng, trường UUID sẽ được điền đúng cách.
Đề xuất của tôi:Tạo trình kích hoạt giá trị mặc định UUID bằng cách sử dụng di chuyển
(trình kích hoạt này làm cho máy chủ DataBase thực hiện công việc tạo UUID mỗi khi khách hàng mới được chèn vào)
<?php namespace MegaBank\HighInterestLoans\Updates;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class MigrationTriggerForCustomers extends Migration
{
public function up()
{
DB::unprepared('CREATE TRIGGER before_insert_customers
BEFORE INSERT ON
`megabank_highinterestloans_customers`
FOR EACH ROW
SET new.uuid = UNHEX(REPLACE(UUID(), "-","");');
}
public function down()
{
DB::unprepared('DROP TRIGGER `before_insert_customers`');
}
}
Cuối cùng, nếu bạn muốn nhận được phiên bản UUID của con người có thể đọc được, chỉ cần thực hiện như sau:
SELECT HEX(UUID) FROM customers;
Dù sao, hy vọng điều này sẽ giúp ai đó :-)