2016-02-09 3 views
8

Ich habe zwei Modelle, die durch eine Pivot-Tabelle, User und Task verbunden sind.Laravel: finde, ob ein Pivot-Tabellen-Datensatz existiert

Ich habe eine user_id und eine task_id.

Was ist der beste Weg zu prüfen, ob für diese Kombination aus Benutzer und Aufgabe ein Datensatz existiert?

+3

Ich hoffe, dass dies eine Lösung sein wird http://stackoverflow.com/questions/24555697/check-if-belongstomany-relations-exists-laravel –

Antwort

13

Sie haben je nach Situation verschiedene Optionen.

Wenn Sie bereits eine User Instanz haben, und Sie wollen sehen, ob es eine Aufgabe mit einer bestimmten ID hat, können Sie tun:

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

du umkehren können, wenn Sie die Task Instanz und wollen überprüfen für einen Benutzer:

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

Wenn Sie nur die IDs haben, ohne eine Instanz von jeder, könnten Sie wie folgt vorgehen:

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

sollte dies die akzeptierte Antwort sein – captainblack

+0

@patricus, Scheint, dass Sie mir helfen können. Schau dir das an: https://stackoverflow.com/questions/44519339/how-can-i-update-pivot-table-on-laravel –

2

können Sie dies suchen?

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

Sie können den folgenden Code verwenden:

$ user = Benutzer :: find (1);

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