【发布时间】:2018-02-20 23:04:02
【问题描述】:
我正在尝试使用预先加载优化关系并在 with 子句中实现预先加载的条件,但是当我执行以下操作时:
$totalOpenQry = Enquiry::whereIn('staff_id', $employeeIds)
->with(['enquiryStats' => function ($query) {
$query->where('is_open','=',true)
->where('is_dead','=',false)
->orderBy('id','asc');
}])
->where('ed_timestamp', '>=', $dateRange['start'])
->with('country');
$totalOpen = $totalOpenQry->toSql();
$totalOpenQry->toSql()
产生以下内容:
'select * from `enquiries` where `staff_id` in (10, 15) and `ed_timestamp` >= '2017-09-12';
似乎忽略了我的 with 子句中的 where 条件。有没有办法解决这个问题或正确实施它?
谢谢
【问题讨论】:
-
你使用的是哪个 laravel 版本?
-
关系没有加载到同一个查询中。急切加载仍然会运行额外的查询来加载数据,而不是每行额外的查询。
-
使用 Laravel 5.3。 @Devon,我想我可以渴望使用 with? 加载关系?我的结果似乎完全忽略了 is_open 和 is_close
-
我推荐使用 Laravel Debugbar。它将向您显示所有运行的查询。急切加载的查询将直接在此查询之后。