# UUID als ID unter Eloquent ORM nutzen 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: * Die ID kann nicht erraten werden, da sie nicht nur hochgezählt wird * Eine UUID ist eindeutig und basiert auf den Timestamp der Generierung. Das heißt, dass die Datensätze auch über mehrere Datenquellen abgeglichen werden können, da es so keine Konflikte wie bei einfachen IDs gibt. ## Laravel Paket zur Generierung der UUIDs Damit wird die UUID nach dem RFC 4122 Standard generieren können, müssen wir ein zusätzliches Paket laden: [[https://github.com/webpatser/laravel-uuid|Laravel Uuid]] ## UUID statt ID unter Laravel In der Migration verwenden wir statt der üblichen `increments('id')` Methode jetzt eine Spalte vom Typ "String": $table->string('id', 36)->primary()->unique(); ### UUID Model Im Folgenden wird eine neue Model Klasse erstellt, auf die wir bei unseren einzelnen Models (die UUID verwenden sollen) zurückgreifen können: {$model->getKeyName()} = (string) $model->generateNewId(); }); } public function generateNewId() { return Uuid::generate(); } } ### Unsere Model Datei In unserem Model schreiben wir dann nur noch: Wenn wir nun über "Eloquent ORM" einen neuen Datensatz anlegen und speichern, hat dieser eine entsprechende ID/UUID wie: `1e303600-9be4-11e4-b40a-83775f8a121f` {{tag>laravel snippets}}