我正在尝试从两个表中获取结果,我需要从两个表中过滤所需的信息。到目前为止我所拥有的是:
// 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。
答案 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();