Skip to content
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

Feature/#4716 管理者ページ-受注一覧における検索条件の修正 #4766

Merged
merged 6 commits into from
Nov 17, 2020
22 changes: 13 additions & 9 deletions src/Eccube/Repository/OrderRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -106,16 +106,18 @@ public function getQueryBuilderBySearchDataForAdmin($searchData)
}
// multi
if (isset($searchData['multi']) && StringUtil::isNotBlank($searchData['multi'])) {
$multi = preg_match('/^\d{0,10}$/', $searchData['multi']) ? $searchData['multi'] : null;
if ($multi && $multi > '2147483647' && $this->isPostgreSQL()) {
$multi = null;
//スペース除去
$clean_key_multi = preg_replace('/\s+|[ ]+/u', '', $searchData['multi']);
$id = preg_match('/^\d{0,10}$/', $clean_key_multi) ? $clean_key_multi : null;
if ($id && $id > '2147483647' && $this->isPostgreSQL()) {
$id = null;
}
$qb
->andWhere('o.id = :multi OR o.name01 LIKE :likemulti OR o.name02 LIKE :likemulti OR '.
'o.kana01 LIKE :likemulti OR o.kana02 LIKE :likemulti OR o.company_name LIKE :likemulti OR '.
->andWhere('o.id = :order_id OR CONCAT(o.name01, o.name02) LIKE :likemulti OR '.
'CONCAT(o.kana01, o.kana02) LIKE :likemulti OR o.company_name LIKE :likemulti OR '.
'o.order_no LIKE :likemulti OR o.email LIKE :likemulti OR o.phone_number LIKE :likemulti')
->setParameter('multi', $multi)
->setParameter('likemulti', '%'.$searchData['multi'].'%');
->setParameter('order_id', $id)
Copy link
Contributor

@okazy okazy Nov 9, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

より正確でわかりやすい key に変えていただいてわかりやすくなったと思いますが、カスタマイズされて使われている可能性もありますので、マイナーバージョンではkeyは変更しない方がいい以下と思いました。
order_id -> multi

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

なるほど!
注文者の実装を参考にしたのですが、プラグインへの影響まで考慮できていませんでした。

修正のコミット追加しておりますので、ご確認のほど、よろしくおねがいします。

->setParameter('likemulti', '%'.$clean_key_multi.'%');
}

// order_id_end
Expand Down Expand Up @@ -149,16 +151,18 @@ public function getQueryBuilderBySearchDataForAdmin($searchData)

// name
if (isset($searchData['name']) && StringUtil::isNotBlank($searchData['name'])) {
$clean_name = preg_replace('/\s+|[ ]+/u', '', $searchData['name']);
$qb
->andWhere('CONCAT(o.name01, o.name02) LIKE :name')
->setParameter('name', '%'.$searchData['name'].'%');
->setParameter('name', '%'.$clean_name.'%');
}

// kana
if (isset($searchData['kana']) && StringUtil::isNotBlank($searchData['kana'])) {
$clean_kana = preg_replace('/\s+|[ ]+/u', '', $searchData['kana']);
$qb
->andWhere('CONCAT(o.kana01, o.kana02) LIKE :kana')
->setParameter('kana', '%'.$searchData['kana'].'%');
->setParameter('kana', '%'.$clean_kana.'%');
}

// email
Expand Down