【laravel】whereでis nullを勝手にしてくれる賢いやつ

製作 プログラム

最終更新日:2023/11/17

ラムネグから一言:寝る前に読むとくだらなすぎて逆に寝れると好評なすごい適当なブログをこっちではじめてます.

laravelのどのバージョンからかは知りませんが(とりあえず確認したのはlaravel10)、whereでSQLを発行した時、勝手にis nullを付与してくれるのが偉すぎるなーと。

ここではlaravelがwhereでis nullを自動で付与してくれるケースを紹介しようと思います。

そもそも普通のSQL文を自分でほぼ書かないんで知識としてしか知らないんですが、where句ってのはnullは対象に入らない、のがデフォルトだったと思います。そしてもしnulllのカラムも検索対象に含めたければ「is nulll」が必要、と。

laravelの場合、whereを書く時こう書くと思います。


ModelName::where('title', $req->title)->get();

んで、この時に「$req->title」がnullの場合、実際に発行されるSQLでは勝手に「is null」が付与されているっぽいんですよね。

もしかすると普通のSQLでもwhereでnullを指定したら、同じような挙動をするのかもしれませんが、知識としてはwhereではnullの判定ができない、というのが頭の中に張り付いているのでこれは便利だなーと。

逆に、今回、プログラミングしてみて、「あれ?なんでnullなのにこのパターンで抽出できてるんだろう」と疑問に思って調べてみたら、勝手に「is null」が付与されてたってわけです。

まとめ

なんでもlaravelではwhere句でnullの対象を検索対象にした場合、勝手に「is null」が付与されるっぽい、というのを書きました。

これがlaravelの機能なのか、それともSQLの機能なのかよくわかりませんが、とりあえずnullを疑似的にでもただwhereに食わせるだけで検索できるのは便利だなと思いました。

ただ実際にはそういうlaravelの機能に任せるんじゃなくて、自分でそういうのに頼らないクエリを書く方がいいんだろうなーと思います。

【おしらせ、というか完全なる宣伝】

文体がもうぜんぜん適当すぎてあれだけどものすごい自由に書いてるブログ「檸檬だくだく」もよろしく.寝る前に読める恐ろしくくだらないやつです.

こんなにも一ミリも目を引かれないタイトルを取り扱ってます: ココア20g / ハイチュウとかってさ / なぜ米と小麦を食べようと思ったのかの謎 /