バージョン選択

フォーラム

メニュー

オンライン状況

54 人のユーザが現在オンラインです。 (48 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 54
もっと...

サイト内検索

バグ報告 > その他 > 【EC-CUBE 2.12.0】チケット #1881につきまして

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
MPV
投稿日時: 2012/6/28 20:03
対応状況: −−−
仙人
登録日: 2011/3/27
居住地:
投稿: 309
【EC-CUBE 2.12.0】チケット #1881につきまして
稼働環境

[EC-CUBE] 2.11.5
[レンタルサーバ] WADAX
[OS] Red Hat Linux
[PHP] PHP 5.1.6
[データベース] MySQL 5.0.95
[WEBサーバ] Apache
[ブラウザ] Firefox 13.0.1 Google Chrome 20.0.1132.43 IE9

開発環境

[EC-CUBE] 2.12.0
[レンタルサーバ] なし(XAMPP 1.7.7のため)
[OS] Windows7 Professional
[PHP] PHP 5.3.8
[データベース] MySQL 5.5.16
[WEBサーバ] Apache/2.2.21
[ブラウザ] Firefox 13.0.1 Google Chrome 20.0.1132.43 IE9

お世話になります。
見当違いでしたら御容赦下さい。

当方、2.12.0の動作確認を開発環境で行っているのですが
検索ブロックの確認を行っていたところ、

/data/class/SC_Product.php 内の
○findProductIdsOrder
○findProductCount

上記2関数のテーブルの条件記述が



        $table = <<< __EOS__
            dtb_products AS alldtl
__EOS__;



となっております。(changesetの21433で削除されている)

当方、商品コードでの検索ができるようにカスタマイズを
しているのですが、その場合、dtb_products_classを
2.11.5の時と同じようにJOINしないと取得ができず、
JOINしたら正常に取得ができました。

そこで思ったのですが、以下のチケット

商品一覧画面 パラメータ NOSTOCK_HIDDEN = true で DB エラーが発生する(2.12.0にて)

の場合、
/data/class/pages/products/LC_Page_Products_List.php で


    $searchCondition['where'] .= ' AND (stock >= 1 OR stock_unlimited = 1)';


とdtb_products_classの項目を条件で見に行っているので
SQLエラーになっていたりはしないでしょうか?

当方、NOSTOCK_HIDDEN = trueにしても
dtb_products_classをJOINしたら、
正常に取得ができているようです。

ご確認頂ければ幸いです。
重ねまして、もし見当違いでしたら御容赦下さい。
MPV
投稿日時: 2012/6/29 11:37
対応状況: −−−
仙人
登録日: 2011/3/27
居住地:
投稿: 309
Re: 【EC-CUBE 2.12.0】チケット #1881につきまして
自己レスで恐縮です。

どうやら間違っていたようです。
(スレ汚し大変申し訳ありません・・・。)

dtb_products_classをJOINすると、商品一覧の件数が
全然合わなくなるのでダメでした。(T_T)

でもJOINしないと、カスタマイズした方の
商品コード検索(dtb_products_classのproduct_codeを条件に
追加している)の方がエラーになってしまいます。

また、NOSTOCK_HIDDEN=trueにした場合で、商品一覧取得時の
SQL発行時のエラー


SELECT alldtl.product_id
FROM dtb_products AS alldtl
WHERE alldtl.del_flg = 0
AND alldtl.status = 1
AND EXISTS (SELECT *
            FROM dtb_product_categories
            WHERE category_id IN (?,?)
            AND product_id = alldtl.product_id)
AND (stock >= 1 OR stock_unlimited = 1)
GROUP BY alldtl.product_id
ORDER BY ( SELECT T3.rank * 2147483648 + T2.rank
           FROM (SELECT *
                 FROM dtb_product_categories
                 WHERE category_id IN (?,?)) T2
           JOIN dtb_category T3
           ON T2.category_id = T3.category_id
           WHERE T2.product_id = alldtl.product_id
           ORDER BY T3.rank DESC, T2.rank DESC LIMIT 1 ) DESC,product_id DESC


MDB2 Error: no such field

というのが出なくなるので、何か参照できない項目が
ありそうに思われます。
上記2ケースから察すると、dtb_products_classの項目の
ような気がするのですが。

ご助言等頂ければ幸いです。
MPV
投稿日時: 2012/6/29 15:39
対応状況: −−−
仙人
登録日: 2011/3/27
居住地:
投稿: 309
Re: 【EC-CUBE 2.12.0】チケット #1881につきまして
再度自己レスですみません。

一応、以下のように2.11.5の状態に差し戻してみたところ
商品の件数や、NOSTOCK_HIDDEN=trueでも、当方の環境では
正常に取得できました。

/data/class/SC_Product.php


    function findProductIdsOrder(&$objQuery, $arrVal = array()) {
        $table = <<< __EOS__
                 dtb_products AS alldtl
            JOIN dtb_products_class AS T1
              ON alldtl.product_id = T1.product_id
            JOIN dtb_product_categories AS T2
              ON alldtl.product_id = T2.product_id
            JOIN dtb_category
              ON T2.category_id = dtb_category.category_id
__EOS__;

                          ・
                          ・
                          ・

    function findProductCount(&$objQuery, $arrVal = array()) {
        $table = <<< __EOS__
                 dtb_products AS alldtl
            JOIN dtb_products_class AS T1
              ON alldtl.product_id = T1.product_id
            JOIN dtb_product_categories AS T2
              ON alldtl.product_id = T2.product_id
            JOIN dtb_category
              ON T2.category_id = dtb_category.category_id
__EOS__;
        $objQuery->setGroupBy('alldtl.product_id');
        $sql_base = $objQuery->getSql('alldtl.product_id',$table);
        return $objQuery->getOne( "SELECT count(*) FROM ( $sql_base ) as t" , $arrVal);

//      return $objQuery->count($table, '', $arrVal);



/data/class/pages/products/LC_Page_Products_List.php
(商品コードでの検索カスタマイズを含む)


        // 分割したキーワードを一つずつwhere文に追加
        foreach ($names as $val) {
            if (strlen($val) > 0) {
                $searchCondition['where']    .= 'AND ( alldtl.name ILIKE ? OR alldtl.comment3 ILIKE ? OR T1.product_code ILIKE ?) ';
                $searchCondition['arrval'][]  = "%$val%";
                $searchCondition['arrval'][]  = "%$val%";
                $searchCondition['arrval'][]  = "%$val%";
            }
        }


とりあえず、チケット #1881の正式対応が行われるまで
暫定的に2.11.5の状態に差し戻した形で、ほかの確認を
行おうと思っております。

最近どうも勘違いが多いせいか、ご助言等コメントが頂けず
ちょっと悲しいです・・・(T_T)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,711名です
総投稿数は109,948件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1285
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.