ランダムな文字列やユニークなIDをLaravelで生成

Laravel

random

use Illuminate\Support\Str;

// 引数は文字列の桁数
Str::random(5);

→ 'RYmCr'

Str::random(40);

→ 'vhL6UjOjhVzEWh6cZvtd0a8ErQwZoZSlrfSTWaOb'

ユニークな文字列ではありません(理論的に重複する可能性がある)

引数で文字列の桁数を可変できるので、数値が大きければ大きいほど事実上ユニークに近い状況にはできそうです

ちなみにLaravelでinput type fileの画像をサーバ側で保存するときに使うstoreメソッドは、ランダムなファイル名が付与されますが内部的にはStr::random(40)を実行しています

uuid

use Illuminate\Support\Str;

Str::uuid();

→ '51d3d5e0-a7fa-4a96-aef6-3166bf456bc0'

ユニークなIDを生成する時はこれを使う

出力される文字列の桁数は変えられない

桁数を指定してランダムな数値を出力

// ランダムな6桁の数値を出力
str_pad(random_int(0,999999),6,0, STR_PAD_LEFT);

→ 278960

ユニークではありません

数値から複合化できるハッシュ値を生成

use Vinkla\Hashids\Facades\Hashids;

// 引数に数値を指定
Hashids::encode(1);

→ 'erjqv9lv28wn'

// 複合化(配列で値が返ってくることに注意)
Hashids::decode('erjqv9lv28wn')[0];

→ 1

数値からユニークなハッシュ値を生成できます

ユーザに見せたく無いURLのidなどを変換するときによく使います

もちろん複合化できます