0

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

// 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 | 用户信息.用户信息类型 | 用户信息.用户信息信息 2 | 3 | 名字 | 强尼 3 | 3 | 姓氏 | 贝克 4 | 3 | 电话 | 5551234543

我只想要名字信息。所以是这样的:

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

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

4

2 回答 2

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();
于 2013-09-03T23:32:46.533 回答
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(); 
于 2013-09-03T18:57:02.113 回答