Eloquent补充道';为空';到左联接后的where查询


Eloquent adds 'is null' to where query after a left join

下面是我雄辩的查询:

$table =  DB::table('invites')
       ->leftjoin('connections', 'connections.user_id', '=', 'invites.user_id')
       ->where(DB::raw('connections.firm_id = invites.firm_id'))
       ->get();

它应该返回一个与邀请他们的公司相连的用户表。

查询日志显示执行了以下查询:

'query' => 'select * from `invites` left join `connections` on `connections`.`user_id` = `invites`.`user_id` where connections.firm_id = invites.firm_id is null'

最后的is null把一切都搞砸了。我认为这是因为列名相同,或者我在DB::raw中遗漏了什么?

where()方法将列名作为第一个参数,如果缺少下一个参数,它将其视为,其中column为null约束-这就是为什么您会得到这样一个奇怪的查询。使用where Raw()代替:

->whereRaw('connections.firm_id = invites.firm_id')