Co powiesz na ten pomysł na przechowywanie 36-chr UUID jako Binary(16) :
IMO jest zaletą tego, że Laravel nie generuje UUID . Mianowicie, jeśli nowe rekordy (kiedyś w przyszłości) zostaną wstawione do bazy danych spoza aplikacji, pole UUID zostanie poprawnie wypełnione.
Moja sugestia:utwórz wyzwalacz wartości domyślnej UUID za pomocą migracji
(ten wyzwalacz powoduje, że serwer bazy danych wykonuje pracę, aby wygenerować UUID za każdym razem, gdy wstawiany jest nowy klient)
<?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`');
}
}
Na koniec, jeśli chcesz uzyskać czytelną dla człowieka wersję swojego UUID, po prostu wykonaj następujące czynności:
SELECT HEX(UUID) FROM customers;
W każdym razie miej nadzieję, że to komuś pomoże :-)