Laravel で .env の内容が反映されない場合

公式マニュアルにも記載があるが、
Laravel アプリで artisan config:cache を行っていると .env を変更してもファイルの内容が反映されない
また、アプリ内で env ヘルパー関数などから直接環境変数を参照しているとそもそも値が渡っていない
下記実装を見ると分かるが、 config キャッシュ済みの場合はそもそも .env のロード自体がスキップされるため

framework/LoadEnvironmentVariables.php#L20 at bd352a0d2ca93775fce8ef02365b03fc4fb8cbb0 · laravel/framework

解決するには config を cache しない、又は env の値を config ファイルを経由して参照するよう徹底し値の変更ごとに cache し直す

Laravel の Input 値が空文字列だったら null に変換する機能を無効にする

Model のフィールドに空文字列を渡しているつもりが mysql 側から NonNull なカラムに Null が渡されたとエラーが返ってきてこの機能の存在に気づいた
middleware は非常に便利だが、自分が実装・追加したわけではない処理に関してはこのような暗黙的な副作用があったりして中々厳しい

HTTP Requests - Laravel - The PHP Framework For Web Artisans
ドキュメントにも書かれており、どうやら 5.4 からこの挙動がデフォルトになったようだ
無効にするには App\Http\Kernel クラスにある ConvertEmptyStringsToNull middleware をコメントアウトすれば良い