aテーブルのageカラムとbテーブルのageカラムのイコールのレコードを抽出したい場合
->where(‘a.age’, ‘=’, ‘b.age’)
または
->where(‘a.age’, ‘b.age’)
と書いてしまいそうだけど
これだと
where a.age = ‘b.age’ ← ‘b.age’という文字列との比較になってしまう
となり正しい動作をしてくれない。
どうすればいいのか調べると
カラム同士の比較は
->whereColumn(‘a.age’, ‘b.age’)
のようにやるらしい。
もちろん
->whereColumn(‘a.age’, ‘=’, ‘b.age’)
という書き方も出来る。
ちゃんと、Laravelのドキュメントにも書いてある。
Laravelを使いだして半年経ち
5サイト構築したけど、eloquentでカラム同士の比較って初めてなんだなぁ。
ついでにLaravelドキュメントのwhere句辺りを見てみたけど
where句のためのいろんなwhereメソッドが沢山ある。
こんなに覚えられないよ!!
しかも、フレームワークごとに使い方違うし。
絶対、生のSQLを覚える方が楽だしメリット多いと思うんだけどなぁ。
いつも言ってるけど、生のSQLの結果をmodel型で返して欲しい。