前提・実現したいこと
一応前提として
ECCube4で価格による絞り込みをしたいです。
デフォルトの検索機能をカスタマイズする形で実装しています。
ECCube4はSymfonyのクエリービルダーで動いています。
QueryBuilderの書き方、SQLでの書き方どちらでも大丈夫です。
お教えいただきたいです。
下記のようなテーブルがあります。
商品(Product)デーブル
product_id | name | description |
---|---|---|
1 | アイス | アイスです。 |
2 | クッキー | くっきーです |
#### 商品_規格(ProductClass)テーブル | ||
product_class_id | product_id | class_name |
:-- | :--: | --: |
1 | 1 | チョコ |
2 | 1 | バニラ |
3 | 2 | チョコチップ |
4 | 2 | バター |
上記をけつごう(JOIN)して検索します。
|product_id|name|description|product_class_id|class_name|price|
|:--|:--:|--:|
|1|アイス|アイスです。|1|チョコ|300|
|1|アイス|アイスです。|2|バニラ|200|
|2|クッキー|くっきーです|3|チョコチップ|250|
|2|クッキー|くっきーです|4|バター|300|
この状態で価格による絞り込みをしたいのですが、
絞り込みの条件の対象となるのは各商品ごとに規格の1つ目の価格にしたいです。
例えば300円以上(ProductClass.price >= 300)で検索した場合はアイスのみがヒットして欲しいです。
※クッキーは2つ目の規格はprice >= 300ですが、1つめはあてはまらないため。
該当のソースコード
下記でCutomizeの中にカスタム用Repositoryに記載しています。
ただこちらの実装だと、上記のデータ例で言う、アイスとクッキーがどちらもヒットしてしまいます。
結合した1つ目のProductClassにだけprice >= 300 を指定したいばあいはどうしたらいいでしょうか。
QueryBuilderの書き方、SQLでの書き方どちらでも大丈夫です。
お教えいただきたいです。
php
1$builder 2 ->andWhere('pc.price02 >= :price_min') 3 ->setParameter('price_min',$request->query->get('price_min'))//今回の場合は300
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。