首页 > 解决方案 > Laravel 雄辩或 leftjoin 失败

问题描述

我雄辩的询问并没有给我我的期望。当我使用 orWhere 时,它​​放在查询的末尾而不是在 leftjoin 之后。

$r = groupofpupil::where('group_id' , '=', '13')
     ->leftjoin('pupils' ,'pupil1_id' , '=', 'pu_id' )
     ->orWhere('pupil0_id', '=', 'pu_id')
     ->leftjoin('users', 'pupils.id', '=', 'users.id')
     ->select('*')
     ->get();

sql查询是:

SELECT * from groupofpupils
LEFT JOIN pupils on pupil1_id = pu_id
LEFT JOIN users on pupils.id = users.id 
WHERE group_id = 13 
OR pupil0_id = pu_id

但我期待这个

SELECT * from groupofpupils 
LEFT JOIN pupils on pu_id = pupil1_id OR pu_id = pupil0_id 
LEFT JOIN users on pupils.id = users.id 
WHERE group_id = 13 

请问,我做错了什么?

标签: laraveleloquent

解决方案


尝试这样的事情:

$r = groupofpupil::leftjoin('pupils', 'pupils.pupil1_id', '=', 'groupofpupils.pu_id')
      ->leftjoin('users', 'users.id', '=', 'pupils.id')
      ->where('groupofpupils.group_id', 13) 
      ->orWhere('pupils.pupil0_id', '=', 'groupofpupils.pu_id') 
      ->get();

推荐阅读