Eloquent查询所有用户的数据透视表 - 还包括没有用户的记录

时间:2016-04-18 21:33:08

标签: php laravel laravel-5 eloquent

我正在查询一个表,该表查找分配给给定用户(登录的用户)的所有任务。

我有一个用于任务/用户关系的数据透视表,因为可以为一个任务分配多个用户。以下功能也成功地抓取了用户分配的所有任务。没问题。

然而 ,我还想在下面的函数中包含没有用户分配的任务(在我的平台中,没有分配给任务的用户意味着它是为了“每个人”)。

$user_tasks = Team::currentTeam()->tasks()->with('user', 'comments')->whereHas('user', function($query) {
    $query->where('user_id', Auth::user()->id);
})->get();

2 个答案:

答案 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);