ホームページ >バックエンド開発 >PHPチュートリアル >Laravelの複数条件の関連クエリについて質問がありますか?

Laravelの複数条件の関連クエリについて質問がありますか?

PHP中文网
PHP中文网オリジナル
2017-03-21 16:18:454540ブラウズ

Laravel の複数条件の関連クエリ問題について:

table order Order table: order 订单表:

  • id 自增ID

  • order_id 订单号

  • paid_date 支付时间

order_product 订单产品表:

  • id 自增ID

  • fk_order_id 订单号,外键

  • product_name 名称

  • product_number 编号

  • quantity

    • id 自己インクリメント ID

  • order_id 注文番号
  • paid_date 支払い時間



    table order_product 注文商品テーブル:


    • id 自己インクリメント ID

    • fk_order_id 注文番号、外部キー
    • product_name 名前

    • product_number 番号
    • quantity quantity

      テーブル関係:

      order - 1:n - order_product

      要件:

      Laravel Eloquent ORM を介して次のネイティブ SQL を実装:

      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%'
      マニュアルを何回も読んでやってみましたただし、現在、B.product_name のような条件を実装するのは whereHas のみです。条件が両方のテーブルに存在する場合、それを実行することは実際には不可能です。

      Laravelの先輩方にアドバイスをいただければ幸いです、ありがとうございます! 🎜🎜🎜 PS. 補足: 🎜🎜現在、リストページのフィルタリングと検索を行っており、ページネーションが必要です。 🎜🎜🎜🎜解決策: 🎜🎜🎜
      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(....);
      🎜上記は、Laravel の複数条件の関連クエリの問題に関するものです。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。 🎜🎜関連記事: 🎜🎜🎜Laravel関連クエリは管理オブジェクトのデータの一部しか取得できない🎜🎜🎜🎜laravel関連クエリの問題🎜🎜🎜🎜laravel関連クエリの記事と記事著者🎜🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。