2016-02-09 16 views
8

Ho due modelli che sono uniti da una tabella pivot, User e Task.Laravel: trova se esiste un record di tabella pivot

Ho un user_id e un task_id.

Qual è il modo più accurato per verificare se esiste un record per questa combinazione di utente e attività?

+3

Spero che questa sarà una soluzione http://stackoverflow.com/questions/24555697/check-if-belongstomany-relation-exists-laravel –

risposta

13

Si dispone di un paio di opzioni a seconda della situazione.

Se si dispone già di un'istanza User e si desidera vedere se ha un compito con una certa id, si può fare:

$user = User::find(1); 
$hasTask = $user->tasks()->where('id', $taskId)->exists(); 

si può invertire questo, se avete l'istanza Task e si desidera verificare la presenza di un utente:

$task = Task::find(1); 
$hasUser = $task->users()->where('id', $userId)->exists(); 

Se v'è solo gli iD, senza un'istanza di ciascuno, si potrebbe procedere come segue:

$hasPivot = User::where('id', $userId)->whereHas('tasks', function ($q) use ($taskId) { 
     $q->where('id', $taskId); 
    }) 
    ->exists(); 
+1

questa dovrebbe essere la risposta accettata – captainblack

+0

@patricus, Sembra che mi può aiutare. Guarda questo: https://stackoverflow.com/questions/44519339/how-can-i-update-pivot-table-on-laravel –

2

potrebbe essere la ricerca di questo?

$users = User::has('task')->get(); 
-1

È possibile utilizzare il seguente codice:

$ user = Utente :: find (1);

$ hasTask = $ user-> tasks() -> dove ('task_id', $ taskId) -> exists();