-
Notifications
You must be signed in to change notification settings - Fork 654
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
管理ツールの受注詳細ページで商品追加時に商品コードを入れるとエラーになる #4678
Comments
以下の環境でテストをして見ましたが再現しませんでした。
問題の箇所は以下の画像の箇所であっていますか? |
4.0.4にて再現しました。 refs @okazy ec-cube/src/Eccube/Repository/ProductRepository.php Lines 228 to 237 in 925e1f6
// 正常に動作したコード
if (isset($searchData['id']) && StringUtil::isNotBlank($searchData['id'])) {
$id = preg_match('/^\d{0,10}$/', $searchData['id']) ? $searchData['id'] : null;
$expr = $qb->expr();
$orX = $expr->orX();
$subQuery = $this->getEntityManager()->createQueryBuilder();
$subQuery
->select('pc2')
->from(ProductClass::class, 'pc2')
->andWhere('p.id = pc2.Product')
->andWhere('pc2.code LIKE :likeid');
$orX->add('p.id = :id');
$orX->add('p.name LIKE :likeid');
$orX->add($expr->exists($subQuery));
$qb
->andWhere($orX)
->setParameter('id', $id)
->setParameter('likeid', '%'.str_replace(['%', '_'], ['\\%', '\\_'], $searchData['id']).'%');
} |
解決策は見当もつかないのですが、原因となる箇所はおよそ把握できたので報告します。
上記にて商品規格(pc)がSELECTに追加されていて、コミットログを見るとこれはN+1問題への対応のようです。
その後、上記にて再度商品規格(pc)をSELECTに追加して検索することで、商品コードがhoge以外の商品規格を検索する際に、DoctrineのObjectHydratorがうまく値を取れずエラーが発生する…みたいです。 単純にエラーが発生しないようにするだけなら、下記のいずれかの方法で対応が可能です。
ちなみに商品管理画面で商品コードを指定して検索すると、
この現象が確認できたので併せて画像にて報告しておきます。(上はaddSelectあり、下はaddSelectなし) |
#4695 で修正されましたのでクローズします。 |
概要(Overview)
管理ツールの受注詳細ページで商品追加時に商品コードを入れると
search product failed.
というアラートが出てきて商品の追加が出来ません
期待する内容(Expect) or 要望 (Requirement)
商品コードを入力した場合も正常に追加対象の商品が登録できるようになる
再現手順(Procedure)
管理ツールより
受注一覧→受注データを選択→商品を追加→検索boxに存在する商品コードを入力して検索すると
search product failed.
というアラートが出てくる
環境 (environment)
関連情報 (Ref)
The text was updated successfully, but these errors were encountered: