2016-02-09 15 views
8

Mam dwa modele połączone tabelą przestawną: User i Task.Laravel: znajdowanie rekordu tabeli przestawnej

Mam user_id i task_id.

Jaki jest najdogodniejszy sposób sprawdzenia, czy istnieje rekord dla tej kombinacji użytkownika i zadania?

+3

Mam nadzieję, że rozwiąże to problem http://stackoverflow.com/questions/24555697/check-if-belongstomany-relations-exists-laravel –

Odpowiedz

13

Masz kilka opcji w zależności od sytuacji.

Jeśli masz już instancję User i chcesz sprawdzić, czy to ma za zadanie z pewnym id, można zrobić:

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

można odwrócić, jeśli masz instancję Task i chcą sprawdzić dla użytkownika:

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

Jeśli tylko mają identyfikatory, bez instancji każda, można wykonać następujące czynności:

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

to powinna być zaakceptowana odpowiedź – captainblack

+0

@patricus, Wydaje się, że możesz mi pomóc. Spójrz na to: https://stackoverflow.com/questions/44519339/how-can-i-update-pivot-table-on-laravel –

2

Czy możesz tego szukać?

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

Możesz użyć poniższego kodu:

$ user = Użytkownik :: znajdź (1);

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

Powiązane problemy