-
Notifications
You must be signed in to change notification settings - Fork 657
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
フロント検索ボックス、商品のタグ名による絞り込み #4976
フロント検索ボックス、商品のタグ名による絞り込み #4976
Conversation
tag1, tag2, tag3... とするのではなく、 tag[]として配列でタグを渡す方が冗長なコードが無くなると思うんですが、いかがでしょう? ProductRepository::getQueryBuilderBySearchData() // tag
$tagJoin = false;
if (!empty($searchData['tag']) && $searchData['tag']) {
if ($searchData['tag']) {
foreach($searchData['tag'] as $tkey => $tag)
{
$qb
->innerJoin('p.ProductTag', 'ptg'.$tkey)
->innerJoin('ptg'.$tkey.'.Tag', 'tg'.$tkey)
->andWhere('ptg'.$tkey.'.Tag = :Tags'.$tkey)
->setParameter('Tags'.$tkey, $tag);
}
$tagJoin = true;
}
} Form\Type\SearchProdyctType::buildForm() $builder->add('tag', EntityType::class, [
'class' => 'Eccube\Entity\Tag',
'choice_label' => 'Name',
'choices' => $Tags,
'multiple' => true,
'expanded' => true,
'placeholder' => 'common.select__all_products',
'required' => false,
]); |
Codecov Report
@@ Coverage Diff @@
## 4.1 #4976 +/- ##
============================================
- Coverage 68.33% 68.18% -0.15%
Complexity 6033 6033
============================================
Files 456 456
Lines 24929 24929
============================================
- Hits 17036 16999 -37
- Misses 7893 7930 +37
Flags with carried forward coverage won't be shown. Click here to find out more.
Continue to review full report at Codecov.
|
@matsuoshi ユニットテストがすべて落ちているようですので、最新の 4.1 ブランチをマージしてみていただけますでしょうか? |
b53f7f7
to
0d07178
Compare
@matsuoshi すいません、僕が少し勘違いしていました。 |
3a69920
to
0f67030
Compare
284dd59
to
ebc8a8b
Compare
ebc8a8b
to
0bdb417
Compare
こちら、やはりパフォーマンスの懸念と、外部仕様が適切がどうかという所から再検討したいと思います |
@matsuoshi ウチの事例だと、キーワードじゃなくて、タグをクリックした際にそのタグで絞り込める様な感じで実装しています。 https://kamiol.com/products/list?tag[]=6&tag[]=8&name=%E3%82%AD%E3%83%A5%E3%83%AA%E3%82%A2 |
概要(Overview・Refs Issue)
4.1-feature 向けのPRです。
フロントの検索ボックスにて、タグ名での検索を行えるようにします
#4862
いったんPR作成しましたが、ちょっとクエリ記述部分が悩ましいのでご意見いただけたらと思います。
方針(Policy)
商品に付与されたタグ名を、検索ボックスからの検索対象にします。
例: 「新商品」タグが付与された商品は、「新商品」という文字列で検索した場合、検索にひっかかるようになる
フロントの見た目・UI変更はありません。
実装に関する補足(Appendix)
管理画面側のタグ検索は別PRにて
#4975
テスト(Test)
タグ名による検索、複数のタグ名でのand検索、タグ名と商品名のand検索、のテストを追加しています
相談(Discussion)
現状の検索処理 ProductRepository の
getQueryBuilderBySearchData()
では、規格の商品コードを検索対象としています。今回はそれと同様にタグ名を検索対象とするよう、直後にSQLを追記しました。
が、SQLの記述が長くなってきましてこれで良いのか判断しかねています。
たとえばクエリビルダの
expr()->orX()
あたりを使って分割・書き換えたほうがよいか、他になにかよい手があればアドバイスいただきたい感じです
マイナーバージョン互換性保持のための制限事項チェックリスト
レビュワー確認項目
新機能追加に伴う競合確認
3件タグ関連のプラグインあり、調査してチェック