Eloquent で JOIN
したテーブルのカラムで絞り込む場合の書き方です。
やり方
次のようにします。
Eloquent で使われる文字列は、 最終的にそのまま結合されますので、 (テーブル名).(カラム名)
という書き方をすればいいことになります。 with
を使う場合でも、 結合したテーブルのカラムを条件に刷る場合は leftJoin
をつける必要があります。 with
で指定されたテーブル(メソッド名)は、 メインのSQLが実行された後に再度SQLを実行して取得されますから。
そして気にするべきは、 orderBy
, get
の中でもテーブル名を指定してカラムを記述しているところです。 上で述べたとおり、文字列がそのまま結合されてSQLになりますから、テーブル名をつけずにSQLを実行するとどのテーブルのカラムか特定できず ambiguous column name というエラーが出ることがあります。 これはLaravel5 LEFT JOIN したら ID が null になった場合の対処法 にも書いたことです。