在两个内部联接表中使用WHERE的雄辩ORM

时间:2013-09-03 18:50:56

标签: mysql orm laravel eloquent

我正在尝试从两个表中获取结果,我需要从两个表中过滤所需的信息。到目前为止我所拥有的是:

// get list of students in this class; 
$students = DB::table('students')
->join('userinfo', 'students.studentUserID', '=', 'userinfo.userinfoUserID')
->select('userinfo.userinfoInfo', 'userinfo.userinfoUserID')
->where('students.studentClassID', '=', $cid)
->get(); 

这很好但我想进一步过滤结果。 我有userinfo列的方式是这样的:

  

id | userinfo.UserID | userinfo.userinfoType | userinfo.userinfoInfo   2 | 3 | firstName |约翰尼   3 | 3 | lastName |面包师傅   4 | 3 |电话| 5551234543

我只想要firstName信息。所以像这样:

  

- > where('userinfo.userinfoType','=','firstName')

如何在Eloquent中运行这样的查询?我正在使用laravel。

2 个答案:

答案 0 :(得分:0)

您可以使用QueryBuilder执行类似的操作:

$students = DB::table('students')
    ->join('userinfo', function($join)
        {
            $join->on('students.studentUserID', '=', 'userinfo.userinfoUserID')
                ->orOn('userinfo.userinfoType', '=', 'firstName')
        })
    ->select('userinfo.userinfoInfo', 'userinfo.userinfoUserID')
    ->where('students.studentClassID', '=', $cid)
    ->get(); 

答案 1 :(得分:0)

我找到了解决方法。只需添加另一个where语句。在我的情况下,整个脚本是

$students = DB::table('students')
->join('userinfo', 'students.studentUserID', '=', 'userinfo.userinfoUserID')
->select('userinfo.userinfoInfo', 'userinfo.userinfoUserID')
->where('students.studentClassID', '=', $cid)
->where('userinfo.userinfoType',  'firstName')
->get();