Co říkáte na tento nápad pro uložení 36chr UUID jako binární(16) :
IMO je výhoda v tom, že Laravel negeneruje UUID . Konkrétně, pokud se do databáze (někdy v budoucnu) vloží nové záznamy zvenčí aplikace, pole UUID je správně vyplněno.
Můj návrh:Vytvořte spouštěč výchozí hodnoty UUID pomocí migrací
(tento spouštěč přiměje databázový server vygenerovat UUID pokaždé, když je vložen nový zákazník)
<?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`');
}
}
A konečně, pokud chcete získat verzi svého UUID, která je čitelná pro člověka, proveďte následující:
SELECT HEX(UUID) FROM customers;
Každopádně doufám, že to někomu pomůže :-)