質問 > 管理機能 > 検索条件「在庫なし」のエラー |
管理機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
tori3103 |
投稿日時: 2019/12/17 19:11
対応状況: 解決済
|
新米 登録日: 2019/12/8 居住地: 投稿: 8 |
Re: 検索条件「在庫なし」のエラー ありがとうございます。
よろしくお願いいたします。 P.S. リポジトリのカスタマイズで対応できました。 ありがとうございました。 |
umebius |
投稿日時: 2019/12/17 17:49
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 検索条件「在庫なし」のエラー ありがとうございます、現象確認できました。
確かに規格を初期化すると管理画面から関与することができないvisible=falseのデータが生成されます。 1がvisible=trueになり2は3つともvisible=falseになるという設計自体は問題ないと思うのですが、管理画面の商品検索(「在庫なし」にチェック時)に不具合があり、エラーになっております。 端的にいうと、Eccube\Repository\ProductRepository::getQueryBuilderBySearchDataForAdminで、visible=falseが検索対象から除外されていないことが問題だと考えられます。 つまりgetQueryBuilderBySearchDataForAdminメソッド内で下記の1行を追加すれば改善すると思われますが、詳細確認してissue登録させていただきます。
|
tori3103 |
投稿日時: 2019/12/17 17:24
対応状況: −−−
|
新米 登録日: 2019/12/8 居住地: 投稿: 8 |
Re: 検索条件「在庫なし」のエラー ご回答ありがとうございます。
商品を新規作成してやってみたのですが…, 1.在庫数10で商品を新規登録 2.規格を3つ在庫数0で登録 この時点では1がvisible=false,2がvisible=trueになっていると思います。 検索条件でこの商品IDと「在庫なし」で検索すると正常に検索されて一覧に当該商品が表示されます。 3.この商品の編集画面から「この商品の規格を確認」ボタンの規格登録画面で「商品規格の初期化」をして規格をなしにします。 この時点で1がvisible=trueになり2は3つともvisible=falseになると思います。 この状態で「在庫なし」の条件を入れて検索すると最初に書いたエラーになるのです。 当該商品は商品規格は削除されているので検索結果に入らないのはいいのですが,エラーになるためそれ以外の拾いたい結果が表示されなくなっているというのが現状です…。 |
umebius |
投稿日時: 2019/12/16 9:31
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 検索条件「在庫なし」のエラー visibleはその規格を使用するチェックをしているかどうかで
在庫との連動はなかったと思いますが、何か事象が発生していましたでしょうか? 規格を初期化した際は、古いものは全てvisible=falseになりますが、規格無しのデータがvisible=trueにセットされます。 https://github.com/EC-CUBE/ec-cube/blob/4.0.3/src/Eccube/Controller/Admin/Product/ProductClassController.php#L216
|
tori3103 |
投稿日時: 2019/12/14 0:54
対応状況: −−−
|
新米 登録日: 2019/12/8 居住地: 投稿: 8 |
Re: 検索条件「在庫なし」のエラー ご回答ありがとうございます。
エラーが出ている商品の例を一つ挙げると,データベース上ではこの商品に紐づいているproduct_classのレコードは7つあって,うち3つが在庫無制限でvisible=true,残りの4つは在庫0でvisible=falseです。 商品自体は公開です。 管理画面の商品一覧でこの商品IDで検索すると一覧に表示されますが,検索条件に「在庫なし」を追加して再検索した場合エラーになります。 一度商品規格を初期化して新たに設定し直したり,規格をなくしてデフォルトだけにした場合に,それまでのproduct_classのすべての在庫数が0だとすると,在庫なしのままvisible=falseになり,この状態になりそうな気がするのですが,運用上はそうならないようになっているのでしょうか? |
umebius |
投稿日時: 2019/12/13 23:48
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 検索条件「在庫なし」のエラー visible=falseは、規格を設定している商品で使用しない規格に設定されるフラグなので、管理画面から商品登録する場合規格を1つ以上指定しないと登録できないため問題は起きないのだと思います。 (商品の公開・非公開は別にフラグがあってdtb_productテーブルのproduct_status_idです) 2系から移行されたのことですが、この辺りの仕様はなるべく合わせた方がよかと思います。他の部分やプラグインに影響することもあるので。
|
tori3103 |
投稿日時: 2019/12/13 18:48
対応状況: −−−
|
新米 登録日: 2019/12/8 居住地: 投稿: 8 |
検索条件「在庫なし」のエラー [EC-CUBE] 4.03
管理画面からの検索で「在庫数なし」あるいはトップページの「在庫切れ商品数」からのリンクがエラーになります。 エラーメッセージは 「"Warning: min(): Array must contain at least one element"」 です。 Product.phpの
がエラー箇所で$this->price02が空配列なのが原因のようです。 遡ってfunction _calc()を見ると
となっているので,在庫なしのデータが全部visible=falseなら空の配列にはなるのだと思います。 2系から4系へデータを移行しているのでその際になにかデータがおかしくなったかもしれずよくわからないのですが,実際の運用ではこのようなパターンでの現象は起きないものでしょうか? 開発モードでだけ発生するエラーなので緊急性はないのと,普通に管理画面から運用しているだけなら起きない現象であればそのままでもいいかなと思っているので,そのあたりを教えていただけると助かります。 よろしくお願いいたします。 |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |