バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > MYページの購入履歴一覧に商品名を入れたい

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ckcube5522
投稿日時: 2016/3/15 20:52
対応状況: −−−
新米
登録日: 2015/11/27
居住地:
投稿: 6
MYページの購入履歴一覧に商品名を入れたい
------------------------------------------------------------------------------------------
[EC-CUBE] 2.13.3
[レンタルサーバ] さくらクラウドサーバー
[PHP] 5.3.3
[データベース] MySQL 5.6.29
[WEBサーバ] Apache
------------------------------------------------------------------------------------------


いつもお世話になっております。
ECCUBE初心者です。

MYページの購入履歴一覧に商品名を入れたいのですが、
dtb_orderの中には商品名のレコードが無く、
dtb_order_detailから引っ張ってくる必要があると思うのですが、
その方法がわからず困っています。


LC_Page_Mypage.php内の


    /**
     * 受注履歴を返す
     *
     * @param mixed $customer_id
     * @param integer $startno     0以上の場合は受注履歴を返却する -1の場合は件数を返す
     * @access private
     * @return void
     */
    public function lfGetOrderHistory($customer_id, $startno = -1)
    {
        $objQuery   = SC_Query_Ex::getSingletonInstance();
        $col        = 'order_id, create_date, payment_id, payment_total, status';
        $from       = 'dtb_order';
        $where      = 'del_flg = 0 AND customer_id = ?';
        $arrWhereVal = array($customer_id);
        $order      = 'order_id DESC';
						
        if ($startno == -1) {
            return $objQuery->count($from, $where, $arrWhereVal);
        }

        $objQuery->setLimitOffset(SEARCH_PMAX, $startno);
		
        // 表示順序
        $objQuery->setOrder($order);

        //購入履歴の取得
        return $objQuery->select($col, $from, $where, $arrWhereVal);
		
		
	}



上記のコードの中に、


        $col        = 'order_id, create_date, payment_id, payment_total, status, product_name';
        $from       = 'dtb_order,dtb_order_detail';



と入れれば反映されるのかなと思ったのですが、エラーでした。

どなたかご教授いただけませんでしょうか?
よろしくお願いいたします。
red
投稿日時: 2016/3/15 23:28
対応状況: −−−
登録日: 2010/2/15
居住地: 東京都
投稿: 1570
Re: MYページの購入履歴一覧に商品名を入れたい
joinして、group_concatすると良いんじゃないかと思います
http://www.dbonline.jp/mysql/select/index14.html
http://www.bunkei-programmer.net/entry/20120530/p1


----------------
EC-CUBEのカスタマイズ、トラブル解決承ります
お気軽にお問い合わせ下さい
https://www.ec-cube.net/integrate/partner/partner.php?partner_id=690

ckcube5522
投稿日時: 2016/3/16 14:45
対応状況: −−−
新米
登録日: 2015/11/27
居住地:
投稿: 6
Re: MYページの購入履歴一覧に商品名を入れたい
red様
ありがとうございます。

頂いたヒントを元に下記のように記載してみました。




    public function lfGetOrderHistory($customer_id, $startno = -1)
    {
        $objQuery   = SC_Query_Ex::getSingletonInstance();
        $col        = 'order_id, create_date, payment_id, payment_total, status, product_name';
        $from       = 'dtb_order INNER JOIN dtb_order_detail USING (order_id)';
        $where      = 'del_flg = 0 AND dtb_order.customer_id = ?';
        $arrWhereVal = array($customer_id);
        $order      = 'order_id DESC';
						
        if ($startno == -1) {
            return $objQuery->count($from, $where, $arrWhereVal);
        }

        $objQuery->setLimitOffset(SEARCH_PMAX, $startno);
		
        // 表示順序
        $objQuery->setOrder($order);

        //購入履歴の取得
        return $objQuery->select($col, $from, $where, $arrWhereVal);
		
	}


これで一応商品名は表示されたのですが、
1つの受注で2つ以上の商品の購入がある時に、
商品ひとつひとつが表示され、購入履歴も商品数分になってしまいました。

商品名の表示はtpl側でまとめられたのですが、
例えば、購入件数自体は1なのに、商品数が2つあると、
「2件の購入履歴があります。」と表示されてしまいます。

表示させたいのは件数なのですが、何か良い方法はないでしょうか。
ご教授いただければ幸いです。
red
投稿日時: 2016/3/16 18:52
対応状況: −−−
登録日: 2010/2/15
居住地: 東京都
投稿: 1570
Re: MYページの購入履歴一覧に商品名を入れたい
group_concatとgroup byをしましょう


----------------
EC-CUBEのカスタマイズ、トラブル解決承ります
お気軽にお問い合わせ下さい
https://www.ec-cube.net/integrate/partner/partner.php?partner_id=690

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,904名です
総投稿数は110,006件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
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.