我有一个包含嵌套查询的大查询。我想知道如何编写它以使它不会混乱。我尝试的是创建查询对象
//get the latest joined employee per department
$q1 = Employee::where('job', 'assistant')
->groupBy('dept_id')
->select(DB::raw('MAX(empid) as empid'));
//fetch his course ID
$q2 = Employee::whereIn('empid', function($query){
$query->$q1;
})
->where('university', 'LIKE', '%UCLA%')
->select('course_id')
->distinct()
->get()->lists('course_id');
我收到此错误
[Symfony\Component\Debug\Exception\FatalThrowableError]
Cannot access empty property
我该怎么做?
答案 0 :(得分:1)
您需要在匿名函数中从父作用域继承您的变量。可以使用use
,例如:
function($query) use ($q1) {
// use $q1 here
}
在此处阅读use
(示例#3从父作用域继承变量):http://www.php.net/manual/en/functions.anonymous.php
答案 1 :(得分:0)
你应该这样做:
$q1 = Employee::where('job', 'assistant')
->groupBy('dept_id')
->select(DB::raw('MAX(empid) as empid'));
$q2 = Employee::whereIn('empid', function($query) use($q1) {
$query->where('id', $q1); // <---- Do it like this
})
->where('university', 'LIKE', '%UCLA%')
->select('course_id')
->distinct();
希望这有帮助!