バージョン選択

フォーラム

メニュー

オンライン状況

97 人のユーザが現在オンラインです。 (71 人のユーザが フォーラム を参照しています。)
登録ユーザ: 3
ゲスト: 94
ateshi repr59e yadokari24 もっと...

サイト内検索

質問 > フロント機能 > 商品検索時の価格での絞り込みについて

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mackarel
投稿日時: 2019/4/15 16:29
対応状況: −−−
半人前
登録日: 2018/11/2
居住地:
投稿: 17
商品検索時の価格での絞り込みについて
以前他の方が投稿されている
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=20078&forum=17
こちらの質問内容と似ているのですが、

ProductRepositoryに価格による絞り込みのロジックを追記したのですが、
引用:
Notice: Undefined index: price02_min

と表示されます。
該当のプログラムは以下です。
引用:

if (isset($searchData['price_range_low']) && $searchData['price_range_low']->getId() > 0) {
$qb->addSelect('MIN(pc.price02) as HIDDEN price02_min')
->innerJoin('p.ProductClasses', 'pc')
->andWhere('pc.visible = true')
->andWhere('price02_min >= :priceLow')
->groupBy('p.id')
->setParameter('priceLow', $searchData['price_range_low']);
}


「price_range_low」が絞り込み価格の下限金額になります。

引用:
->andWhere('price02_min >= :priceLow')


引用:
->andWhere('pc.price02_min >= :priceLow')

に変更すると
引用:
Error: Class Eccube\Entity\ProductClass has no field or association named price02_min

と表示されます。こっちは納得できました。ProductClassに確かにprice02_minというプロパティはないので。

これらのエラーを解消して価格による絞り込みができるようにしたいのですが、どなたかおわかりになりますでしょうか・・・?

よろしくお願いいたします。
468
投稿日時: 2019/4/16 8:42
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1818
Re: 商品検索時の価格での絞り込みについて
回答ではなくて、申し訳ないのですが、
HIDDENで定義した項目は(今回はprice02_min)whereでも利用できるものなのでしょうか?
色々調べてみてorderに指定したサンプルコードは多く見かけるのですが
whereに利用している記述を見かけなかったので...。

SQLで考えるとサブクエリを用いる形になるかと思うのですが、
Doctrineでは、HIDDENを記述する事でその辺りが処理できるものなのでしょうか?
もし、HIDDENがそのような機能を持っていない場合は、サブクエリに対応する記述が必要になってくるのではないかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

umebius
投稿日時: 2019/4/16 11:02
対応状況: −−−
登録日: 2016/7/22
居住地: 東京日本橋
投稿: 1296
Re: 商品検索時の価格での絞り込みについて
使うならhavingだと思います。

->andHaving('price02_min >= :priceLow')


----------------
EC-CUBE3系4系 カスタマイズ ECのプロがシステム特急案件承ります。
公式インテグレートパートナー (株)U-Mebius

mackarel
投稿日時: 2019/4/16 14:11
対応状況: −−−
半人前
登録日: 2018/11/2
居住地:
投稿: 17
Re: 商品検索時の価格での絞り込みについて
ありがとうございます。

引用:
Doctrineでは、HIDDENを記述する事でその辺りが処理できるものなのでしょうか?


結果論ではありますが、件のwhere句を除くと処理はできているようなので実際は処理できているのかどうかわからない状態です。

このあたりはまだ詳細まで確認できておりません。。。
mackarel
投稿日時: 2019/4/16 14:23
対応状況: −−−
半人前
登録日: 2018/11/2
居住地:
投稿: 17
Re: 商品検索時の価格での絞り込みについて
ありがとうございます。

引用:
使うならhavingだと思います。

->andHaving('price02_min >= :priceLow')


そうですよね。
投稿に書いてなかったのですが、having(andhaving)も試してます。
ただ、以下のようなエラーが出てました。

引用:
Cannot count query that uses a HAVING clause. Use the output walkers for pagination


別のエラーと思い一旦検証からは外しておりました。
こちらを掘り下げたほうが良さそうですね。。。
umebius
投稿日時: 2019/4/21 11:51
対応状況: −−−
登録日: 2016/7/22
居住地: 東京日本橋
投稿: 1296
Re: 商品検索時の価格での絞り込みについて
商品一覧ページののページネーション作成時にwrap_queriesをtrueにすればhavingで大丈夫だと思います

参考記事
https://umebius.com/eccube/cannot-count-query-uses-clause-use-output-walkers-pagination/


----------------
EC-CUBE3系4系 カスタマイズ ECのプロがシステム特急案件承ります。
公式インテグレートパートナー (株)U-Mebius

mackarel
投稿日時: 2019/4/22 13:33
対応状況: −−−
半人前
登録日: 2018/11/2
居住地:
投稿: 17
Re: 商品検索時の価格での絞り込みについて
ありがとうございます。
こちらでも入れ違いで確認しており、対策を講じてエラーは出なくなりました。

ただソートと組み合わせると別のエラー(ソートしたカラムがcount関数のdistinctにも指定される)が出たのでこれはまた別で対処していきます。

皆様ありがとうございました!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

ec-cube.co

統計情報

総メンバー数は49,460名です
総投稿数は93,187件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1967
4
468
1818
5
yuh
1602
6
red
1343
7
umebius
1296
8
fukap
907
9
h_tanaka
907
10
tsuji
856
11
shutta
835
12 ramrun 789
13
tao_s
774
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.