2016-04-18 3 views
0

テーブルにクエリを実行しています。特定のユーザー(サインインしたユーザー)に割り当てられたすべてのタスクを検索しています。Eloquentすべてのユーザーのピボットテーブルを照会し、ユーザーがいない場合のレコードも含めます。

タスクに複数のユーザーを割り当てることができるため、タスク/ユーザーの関係のピボットテーブルがあります。以下の関数は、ユーザーが割り当てられているすべてのタスクを正常に取得します。そこに問題はありません。

しかし、私はまた、NOユーザーは、以下の機能(私のプラットフォームでは、タスクに割り当てられたユーザーは、それが「みんな」のためだ意味がない)でに割り当てられていないタスクを含めます。

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

答えて

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を使用し、オペレーターとして第二引数を指定する必要があります。そこだけです。

+0

感謝を。 'または'と 'default'と '$ boolean'は何ですか? –

+1

@MikeBarwickこれは、クエリを生成するときに使用される演算子です.SQLクエリに 'AとB'、または' AまたはB' –

0

あなたは個別に割り当てられていないタスクを取得することができます:

$unassigned_tasks = Task::unassigned()->get(); // Uses a scope that says where user_id is null 

そして、のようなもの:

$user_tasks->tasks->push($unassigned_tasks); 
関連する問題