質問 > フロント機能 > 商品検索の表示順を複数条件で検索したいです |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
nmkbc |
投稿日時: 2020/5/19 17:07
対応状況: −−−
|
新米 登録日: 2020/5/19 居住地: 投稿: 2 |
商品検索の表示順を複数条件で検索したいです ▼テンプレート
[EC-CUBE]2.13系 [OS]windows8.1 [PHP]7.3.8 [データベース]MySQL [ブラウザ]GoogleChrome [カスタマイズの有無]全体的に手を入れている 現在、「メーカーID順且つ価格が安い順」でソートできるような機能を実装したいと思っておりますが、「data/class/pages/products/LC_Page_Products_List.php」の中の表示順序のswitch文のcaseの中に、 $objProduct->setProductsOrder('T2.maker_id, T1.price02', 'dtb_products_class AS T1 JOIN dtb_products', 'ASC'); と追記し、SC_Products.phpのfindProductIdsOrderを動くように整えても「Operand should contain 1 column(s)」が出てきてしまい、うまくいきません。 何とかして「SELECT dtb_products.maker_id, dtb_products_class.price02, dtb_products.name FROM dtb_products INNER JOIN dtb_products_class ON dtb_products.product_id = dtb_products_class.product_id order by maker_id, price02;」で得られるような順番で検索結果を得たいのですが、どうすればよろしいでしょうか。 |
468 |
投稿日時: 2020/5/19 18:48
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品検索の表示順を複数条件で検索したいです 表示順序分岐の為のcaseを追加されている感じでしょうか?
利用しようとされている /data/class/SC_Product.phpのfunction setProductsOrder()は確認されましたでしょうか? SC_Product.phpの処理を追って、組みあがるSQLを確認すると 第1引数の並び替え基準のフィールドは1つしか処理できないようです。 並び順を変更するのであればdefault:のパターンにあるように $objQuery->setOrder() を利用する形になるかと思います。 そこまでソースを読んでいませんが 組みあがるSQLを見る限りでは maker_idはそのまま指定できそうですが、販売価格についてはサブクエリを使う必要がありそうですので SC_Product.php function findProductIdsOrder()の中を参考に$objQuery->setOrder()へ渡す値を組み立てみては如何でしょうか? function findProductIdsOrder()は $objQuery->setOrder("($sub_sql) $o_order, product_id"); を組み立てていますが、 ご要望のパターンは$objQuery->setOrder("maker_id ASC,($sub_sql) ASC");を組み立てるようにする必要があると思います。
|
nmkbc |
投稿日時: 2020/5/20 10:26
対応状況: 解決済
|
新米 登録日: 2020/5/19 居住地: 投稿: 2 |
Re: 商品検索の表示順を複数条件で検索したいです 仰る通りdefaultのパターンを参考にしたら、
思った通りの挙動になりました。ありがとうございます! |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |