Ich habe 3 TabellenLaravel Eloquent Beziehung Filtern nach Spalte der Beziehung
Produkt: [Tabelle]
Person: [Tabelle]
Zahlung: [Tabelle]
Viele zu viele Beziehung zwischen Produkt und Person
One To Viel Beziehung zwischen Produkt und Zahlung (Ein Produkt hat viele Zahlungen)
one to many Beziehung zwischen Person und Zahlung (Eine Person hat viele Zahlungen)
Payment:[Table]
id
person_id
product_id
amount
Die Sache ist, dass ich alle Personen zu bekommen versuchen mit Produkten und Produktzahlungen gefiltert durch person_id
.
Grund ist, dass ich nicht wollen, dass andere Personen in Zahlungen aufnehmen.
Dies ist eigentlich die Abfrage ich laufe ja ich weiß, es ist falsch, denn ich kann es nicht filter von person_id
.
$query = $person::with('product', 'payment')->where('is_active', 1);
möchte ich so etwas wie dies zu erreichen ..
$query = $person::with(array('product', 'payment' => function ($query) {
$query->where('person_id', '=', 'person.id');
}))->where('is_active', 1);
Ich bin nicht hier, aber ein Versuch zu Ihrem zweiten Beispiel geben, aber ersetzen '' Zahlung 'mit product.payment'. –
Empty Array der Zahlung, Abfrage ist falsch; ( –
) Wenn Sie die Personentabelle abfragen und "Zahlungen" und "Produkte" eifrig laden, und Sie nach einer bestimmten Person filtern möchten, filtern Sie einfach die Personen B. $ query = $ person :: with ('produkt', 'zahlung') -> where ('is_active', 1) -> wo ('id', ID_TO_FIND) Laravel erhält zuerst alle Personen mit personen.id = ID_TO_FIND, dann lädt es alle Zahlungen und Produkte für diese Person. – Dave