我在Laravel 5中有这个代码,使用Eloquent,它完美地工作:
$filterTask = function($query) use ($id) {
$query->where('taskid', $id);
};
User::whereHas('submissions', $filterTask)->with(['submissions' => $filterTask])->get();
Run Code Online (Sandbox Code Playgroud)
基本上,目标是只为那些用户提供过滤后的提交,其中包含任何一个.然而,似乎浪费了同时运行whereHas和具有相同回调函数的方法.有没有办法简化它?
谢谢.
我有一个疑问:
Posts::whereHas('comments', function($query){
$query->where('name', 'like', 'asd');
})->with('comments')->get();
Run Code Online (Sandbox Code Playgroud)
它返回所有评论名称类似于“asd”的帖子以及这些帖子的所有评论。我可以在 '::whereHas' 中将上述约束用于 'with' 方法,这样它就不会返回所有评论,而只会返回符合要求的评论吗?还是我必须重复查询?