LoginSignup
2
1

More than 3 years have passed since last update.

Laravelでquery parametersで空文字渡ってくるはずが謎にnullが取れる件

Last updated at Posted at 2021-03-03

はじめに

こんにちは。楽天モバイルの楽天回線エリアに住んでますが、パートナー回線しか繋がらない筆者です。

さて、Laravel使ってまして、query parametersで空文字来てるはずなのに、nullになっちゃうことに地味に小一時間悩んだので共有します。

結論:こいつの仕業

Kernel.php
protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, // これ
];

こいつが空文字nullに変換しているんです... :sob:

地味に小一時間悩んだ話

以下を例にすると、2のときにnullになっているという恐ろしさ...。
そして、3のときも空文字が入っていたもののそれがnullに変換されてsetされているので、デフォルト値の1が適用されないという恐ろしさ...。

HomeController.php
public function index(Request $request)
{
    // 1: http://localhost?hoge=1
    $hoge = $request->input('hoge');
    dd($hoge); // 1

    // 2: http://localhost?hoge=
    $hoge = $request->input('hoge');
    dd($hoge); // null

    // 3: http://localhost?hoge=
    $hoge = $request->input('hoge', 1);
    dd($hoge); // null
}

勝手に変えてほしくない人は

以下コメントアウトしましょう:ok_hand:
あと、ちゃんとコメント書いておきましょう:pray:
https://github.com/laravel/laravel/blob/8.x/app/Http/Kernel.php#L23

おわりに

便利なのかもしれないのですが、良し悪しあると思います:thinking:
何かのお役に立てていれば幸いです。
それでは。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1