我正在查询一个表,该表查找分配给给定用户(登录的用户)的所有任务。
我有一个用于任务/用户关系的数据透视表,因为可以为一个任务分配多个用户。以下功能也成功地抓取了用户分配的所有任务。没问题。
然而 ,我还想在下面的函数中包含没有用户分配的任务(在我的平台中,没有分配给任务的用户意味着它是为了“每个人”)。
$user_tasks = Team::currentTeam()->tasks()->with('user', 'comments')->whereHas('user', function($query) {
$query->where('user_id', Auth::user()->id);
})->get();
答案 0 :(得分:1)
可能这样的事情应该有效:
$user_tasks = Team::currentTeam()->tasks()->with('user', 'comments')->whereHas('user', function($query) {
$query->where('user_id', Auth::user()->id);
})->doesntHave('user','or')->get();
因为没有函数orDoesntHave。只有:
public function doesntHave($relation, $boolean = 'and', Closure $callback = null)
{
return $this->has($relation, '<', 1, $boolean, $callback);
}
已定义,因此您需要使用doesntHave
并将operator指定为第二个参数。
答案 1 :(得分:0)
您可以单独获取未分配的任务:
$unassigned_tasks = Task::unassigned()->get(); // Uses a scope that says where user_id is null
然后像:
$user_tasks->tasks->push($unassigned_tasks);