Ich verfüge über eine Abfragebereichsmethode, die die Ergebnisse in einem Foo-Modell vom Autor des Modells filtert. Die Komplikation ist, dass der Autor nicht direkt verwandt ist.Abfrage eines verwandten Modells innerhalb eines Laravel-Abfragebereichs
Foo gehört zu Bar und Bar gehört dem Benutzer. Wenn Foo auf Benutzer gehörte, konnte ich dies nur tun:
public function scopeAuthorOnly($query, User $user)
{
return $query->whereuser_id($user->id);
}
offensichtlich das wird nicht funktionieren, wie die Foo Modell keine user_id Spalte hat und stattdessen eine bar_id Spalte hat. Ich bin mir jedoch nicht sicher, wie ich die Abfrage so erstellen kann, dass die user_id gefiltert wird.
Irgendwelche Zeiger?
ich eine Laravel-Wege Antwort gepostet haben, überprüfen Sie bitte auch, dass. – Arda
Das ist besser als whereHas, weil es Tabellenindex verwendet und effizienter arbeitet, aber nicht vergessen hinzuzufügen -> select ("users. *") Andernfalls kann laravel Ihnen "id" oder jedes andere Feld aus falscher Tabelle geben, und nein Fehler wird ausgelöst. –
Dies ist besser, wenn Sie mit MySQL festgefahren sind. Andere Engines können bei solchen Abfragen Fehler verursachen. OP hat nie erwähnt, welche DB-Engine er benutzt. – Arda