Bezüglich des damit verbundenen Abfrageproblems mehrerer Bedingungen in Laravel:
Tabelleorder
Bestelltabelle :
id
Selbstinkrementierende ID
order_id
Bestellnummer
paid_date
Zahlungszeitpunkt
Tabelleorder_product
Produkttabelle bestellen:
id
Auto- Inkrement-ID
fk_order_id
Bestellnummer, Fremdschlüssel
product_name
Name
product_number
Nummer
quantity
Menge
Tabellenbeziehung:
order - 1:n - order_product
Anforderungen:
Implementieren Sie das folgende native SQL über Laravel Eloquent ORM:
select * from order as A inner join order_product as B on A.order_id=B.fk_order_id where (A.paid_date between '2016-01-01' and '2016-09-01') and B.product_name like '%Apple iPhone%'
Ich habe das Handbuch mehrmals gelesen und versucht, es zu tun, aber Derzeit implementieren wir B nur über whereHas. Dieser Teil der Bedingung kann nicht ausgeführt werden, wenn die Bedingung in beiden Tabellen vorhanden ist.
Ich hoffe, dass Laravel-Senioren mir einen Rat geben können, danke!
PS. Ergänzung:
filtert und ruft derzeit die Listenseite ab und es besteht Bedarf an Paginierung.
Lösung:
class Order extends Model { public function scopeProducts($query) { return $query->join('order_product', function($join) { $join->on('order.order_id', '=', 'order_product.fk_order_id'); }); } }
Order::products()->where(....);
Das Obige bezieht sich auf das verwandte Abfrageproblem mehrerer Bedingungen in Laravel, verwandte Bitte zahlen Sie Beachten Sie für den Inhalt die chinesische PHP-Website (m.sbmmt.com)!
Verwandte Artikel:
Laravel-bezogene Abfrage erhält nur einen Teil der Daten des verwalteten Objekts