Laravel5.6のUUID Methodsについて
はじめに
Laravel5.6で、UUIDを生成するメソッドが実装されました
(いままでなかったっけ?)
公式より
訳:Laravel5.6で、UUIDを作成する2つのメソッドがサポートされた。一般的なUUIDを作成するStr::uuidと、タイムスタンプをもとに作成される、インデックス可能なStr::orderedUuidメソッドがある。
公式より
UUID Methodshttps://laravel.com/docs/5.6/releases
Laravel 5.6 introduces two new methods for generating UUIDs: Str::uuid and Str::orderedUuid. The orderedUuid method will generate a timestamp first UUID that is more easily and efficiently indexed by databases such as MySQL. Each of these methods returns a Ramsey\Uuid\Uuid object:
use Illuminate\Support\Str;
return (string) Str::uuid();
return (string) Str::orderedUuid();
訳:Laravel5.6で、UUIDを作成する2つのメソッドがサポートされた。一般的なUUIDを作成するStr::uuidと、タイムスタンプをもとに作成される、インデックス可能なStr::orderedUuidメソッドがある。
つかってみた(How to Use)
Str::uuid()とStr::orderedUuid()
print Str::uuid(); print PHP_EOL; print Str::orderedUuid();結果
77be9a68-b31d-4ecc-aa9d-116f5b0b881e 8a607dff-44d3-4da4-9c2d-053e05790909一見して、違いがよくわかりませんでした。
続いて、インデックス可能ということで、ソートしてみます。
Str::uuid()
for($i = 0; $i < 100; $i++) { $sample = new Sample(); $sample->title = Str::uuid(); $sample->save(); }
uuidでソートしてもidがばらばらになりました。uuidは完全にランダムに生成されるためです。
Str::orderedUuid()
for($i = 0; $i < 100; $i++) { $sample = new Sample(); $sample->title = Str::orderedUuid(); $sample->save(); }
こちらは、uuidでソートするとid順になりました。
ソートキーに利用可能 / DB Indexとして効率がよい / 最大値を求めることが可能などの利点があります。
とくに落ちはありませんが、使い所はありそうです