ランダムな文字列やユニークなIDを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などを変換するときによく使います
もちろん複合化できます
ディスカッション
コメント一覧
まだ、コメントがありません
新たにPostされたDocs
: ツール関連
キーボードを銀軸から赤軸に買い替えた話
約3年半前、仕事で使うキーボードとしてARCHISS ProgresTouchの ...: スマホ
楽天モバイルがおすすめできない人の特徴とは?
楽天モバイルの最強プランをおすすめできない人の特徴を簡単にまとめてみました また ...: システム開発
なぜスクラムがつらいのか?開発現場が疲弊するのか?スクラムに対する違和感と共に原因を考えてみた
今ではどこの開発現場に行っても、やれスクラムスクラムと、まるでスクラムでもやって ...: Laravel
1つのテーブルを複数のテーブルと結合したい【Laravel10】
1つのテーブルを2つの異なるテーブルに対して結合したいケースがあったのでLara ...: Laravel
Laravelで複数画像アップロード時のvalidateを指定【Laravel10】
jQuery - Image Uploaderを使って、フォームから複数の画像を ...HashMap
created_by
はやぴ
Web/アプリ開発エンジニア
Sierにてお堅いB向けのソフトウェア開発を経て、現在はC向けのWebやアプリを中心に開発しています。
Utilities