Hvad med denne idé til lagring af en 36chr UUID som binær(16):
IMO er der en fordel ved ikke at have Laravel til at generere UUID . Nemlig, hvis nye poster (en dag i fremtiden) bliver indsat i databasen uden for applikationen, er UUID-feltet korrekt udfyldt.
Mit forslag:Opret en UUID-standardværdiudløser ved hjælp af migreringer
(denne trigger får databaseserveren til at gøre arbejdet med at generere UUID, hver gang en ny kunde indsættes)
<?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`');
}
}
Til sidst, hvis du vil have en udgave af dit UUID, der kan læses af mennesker, skal du blot gøre følgende:
SELECT HEX(UUID) FROM customers;
I hvert fald, håber dette hjælper nogen :-)