Laravelのクエリビルダでjoinするのに少しはまってしまったのでメモ。
以下の記載をしてみて、toSql()
をしてSQLエディタに貼り付けると問題なく動くが、
Laravel上だとうまく動かない。。。
->leftJoin('table1', function ($join) use ('table2') {
$join->on("table1.columnA", '=', "table2.columnA");
$join->where("table1.columnB", '=', "table2.columnB");
})
何が問題だったかというと、table2.columnB
が文字列として扱われてしまっていた。
それを解決するにはwhere
ではなく、whereColumn
を使用する必要があるとのこと。
->leftJoin('table1', function ($join) use ('table2') {
$join->on("table1.columnA", '=', "table2.columnA");
$join->whereColumn("table1.columnB", '=', "table2.columnB");
})
単純な話ですがこれで無事に取得できました。