Heim  >  Artikel  >  Backend-Entwicklung  >  Fragen zur verwandten Abfrage mehrerer Bedingungen in Laravel?

Fragen zur verwandten Abfrage mehrerer Bedingungen in Laravel?

PHP中文网
PHP中文网Original
2017-03-21 16:18:454495Durchsuche

Bezüglich des damit verbundenen Abfrageproblems mehrerer Bedingungen in Laravel:

Tabelleorder Bestelltabelle :

  • idSelbstinkrementierende ID

  • order_idBestellnummer

  • paid_date Zahlungszeitpunkt

Tabelleorder_product Produkttabelle bestellen:

  • id Auto- Inkrement-ID

  • fk_order_id Bestellnummer, Fremdschlüssel

  • product_name Name

  • product_numberNummer

  • quantityMenge

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 (www.php.cn)!

Verwandte Artikel:

Laravel-bezogene Abfrage erhält nur einen Teil der Daten des verwalteten Objekts

Laravel-bezogenes Abfrageproblem

Laravel-bezogene Abfrageartikel und Artikelautoren

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn