もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

laravelのwhereUuid知らなかった

こんばんは。

恥ずかしながらしなかった備忘録です。

ルートパラメータの成約でよく whereとかを使うと思います。

こんな感じの。

Route::get('/user/{id}', function (Request $request, int $id) {
    return 'User ' . $id;
})->where('id', '[0-9]+'); ← これ

idを指定する場合は、primarykeyを指定する感じが多いのかなと思うので、まさに例で書いたような ->where('id', '[0-9]+'); みたいにしちゃうと思います。

int型なら一旦これでもいいかなと思うのですが、primarykeyがuuidの場合、ざっくりstringを全部通すようにするか、自力でフォーマットを作ってやるかなのかなぁ?と思ってたのですが、 whereUuid() なるものがあり、ビビりました。

github.com

    /**
     * Specify that the given route parameters must be UUIDs.
     *
     * @param  array|string  $parameters
     * @return $this
     */
    public function whereUuid($parameters)
    {
        return $this->assignExpressionToParameters($parameters, '[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}');
    }

ほかのwhereと同じでこんな感じで指定できます。

Route::get('/user/{id}', function (Request $request, string $id) {
    return 'User ' . $id;
})->whereUuid('id'); ← これ

終わりに

laravelはまじで知らないだけでいろんなものがいっぱいありますね...

現場からは以上です。