Statt einer einfachen, hochzählenden Zahl als ID, kann auch ein sogenannter „Universally Unique Identifier“ (kurz UUID) verwendet werden. Dieser ist eine Zeichenkette aus 36 Zeichen und hat ein paar Vorteile:
Damit wird die UUID nach dem RFC 4122 Standard generieren können, müssen wir ein zusätzliches Paket laden: Laravel Uuid
In der Migration verwenden wir statt der üblichen increments('id')
Methode jetzt eine Spalte vom Typ „String“:
$table->string('id', 36)->primary()->unique();
Im Folgenden wird eine neue Model Klasse erstellt, auf die wir bei unseren einzelnen Models (die UUID verwenden sollen) zurückgreifen können:
<?php // File: app/models/UuidModel.php use Webpatser\Uuid\Uuid; class UuidModel extends Eloquent { public $incrementing = false; protected static function boot() { parent::boot(); static::creating(function ($model) { $model->{$model->getKeyName()} = (string) $model->generateNewId(); }); } public function generateNewId() { return Uuid::generate(); } }
In unserem Model schreiben wir dann nur noch:
<?php // File: app/models/User.php class User extends UuidModel {}
Wenn wir nun über „Eloquent ORM“ einen neuen Datensatz anlegen und speichern, hat dieser eine entsprechende ID/UUID wie: 1e303600-9be4-11e4-b40a-83775f8a121f