プラグイン > 開発について > 検索機能の拡張について |
開発について
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
Morpheus |
投稿日時: 2018/2/28 11:28
対応状況: −−−
|
新米 登録日: 2018/2/28 居住地: 投稿: 3 |
Re: 検索機能の拡張について ありがとうございます。
$qb = $this->createQueryBuilder('p')->andWhere('p.Status = 1'); // Price $qb->addSelect('MIN(pcp.price02) as prc_min '); $qb->innerJoin('p.ProductClasses', 'pcp'); $qb->groupBy('p'); $qb->andWhere( '(pcp.prc_min >= 2000 and pcp.prc_min < 5000)' ); // category $qb ->innerJoin('p.ProductCategories', 'pct0') ->innerJoin('pct0.Category', 'c0') ->andWhere($qb->expr()->in('pct0.Category', ':Categories0')) ->setParameter('Categories0', $searchData['checkbox0']); $qb ->innerJoin('p.ProductCategories', 'pct3') ->innerJoin('pct3.Category', 'c3') ->andWhere($qb->expr()->in('pct3.Category', ':Categories3')) ->setParameter('Categories3', $searchData['checkbox3']); // stock $qb->addSelect('(case when pcs.stock_unlimited = false and pcs.stock = 0 then 1 else 0 end) as HIDDEN stock_is_no '); $qb->innerJoin('p.ProductClasses', 'pcs'); $qb->groupBy('p'); $qb->andWhere('pcs.stock_unlimited = true OR pcs.stock > 0'); // 価格低い順 $qb->addSelect('MIN(pc.price02) as HIDDEN price02_min'); $qb->innerJoin('p.ProductClasses', 'pc'); $qb->groupBy('p'); // postgres9.0以下は, groupBy('p.id')が利用できない // mysqlおよびpostgresql9.1以上であればgroupBy('p.id')にすることで性能向上が期待できる. // @see https://github.com/EC-CUBE/ec-cube/issues/1904 // $qb->groupBy('p.id'); $qb->orderBy('price02_min', 'ASC'); $qb->addOrderBy('p.note', 'DESC'); コードはこの上記のようになっています。 判定ロジックは取り除いております。 またこの価格に関わる部分を取り除く、もしくは条件から価格を外すと意図した通りの検索結果が表示されます。 ※ProductRepositoryを継承し「getQueryBuilderBySearchData」メソッドを元に作成したメソッドになります。 |
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
検索機能の拡張について | Morpheus | 2018/2/28 8:26 |
Re: 検索機能の拡張について | umebius | 2018/2/28 8:35 |
Re: 検索機能の拡張について | Morpheus | 2018/2/28 11:01 |
Re: 検索機能の拡張について | umebius | 2018/2/28 11:09 |
» Re: 検索機能の拡張について | Morpheus | 2018/2/28 11:28 |