質問 > フロント機能 > 商品の購入回数の取得について |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
wa.shi |
投稿日時: 2019/4/10 18:28
対応状況: 開発中
|
常連 登録日: 2018/2/20 居住地: 投稿: 45 |
商品の購入回数の取得について 毎々お世話になっております。
主題の件につきまして、 受注IDと会員IDを元に 商品の購入回数(個数は含めません)を取得したく思っております。 Query Builderというものを 用いてデータを抽出するのが良いのか はたまた別の方法があるのか苦戦しております。 Query Builderに関しまして、 先程情報を入手したばかりで いろいろな文献を読んでいるのですが、 複数の条件でできるのか理解しておらずで・・・。 かなり初歩的な質問となり 大変申し訳ございませんが、よろしくお願い致します。 EC-CUBE:3.0.17 DB:MySQL 5.6.15 PHP:5.6.35 以上、よろしくお願い致します。 |
468 |
投稿日時: 2019/4/10 18:52
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品の購入回数の取得について 目的のデータを整理して取り出すには、やはりQueryBuilderを使う事になるのではないかと思います。
最終的にどのような形態のデータを表示したいのかの要件によって、 記述の仕方が変わってくると思います。 例えば、会員詳細ページで商品毎の個数を表示したいのであれば、 顧客で絞り込んで、商品毎に件数を集計すれば良いと思いますし、 商品詳細ページで顧客毎の個数を表示したいのであれば、 商品で絞り込んで、顧客毎に件数を集計すれば良いと思います。
|
wa.shi |
投稿日時: 2019/4/10 19:31
対応状況: −−−
|
常連 登録日: 2018/2/20 居住地: 投稿: 45 |
Re: 商品の購入回数の取得について >>468様
早急なるご回答ありがとうございます。 実は用途と致しまして、 初回限定価格の商品を設けまして 購入回数を見て、 カートから削除するかどうかという 機能実装を試みております。 テーブルとしましては dtb_productに kaisu_limitという新項目を追加して 商品ごとの購入制限数の枠を設けております。 (ブランクの場合は無制限) CartService.phpにて function setProductLimit内に当該処理を追記予定でございます。 現在、下記が追記予定内容になります。 if文内の「実際の商品購入回数」の出し方に行き詰まっております。 ちなみに'cart.over.kaisu_limit'のエラーメッセージにつきましては 設定済みです。 引用:
やはりQueryBuilderを使用することになるのですね・・・。 私自身も今後調べますが、 まだ理解できておらず、 アドバイスや糸口をご教示頂けましたら、 非常に幸いでございます。 |
468 |
投稿日時: 2019/4/11 10:20
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品の購入回数の取得について もし、私がカスタマイズする(本体カスタマイズ前提)のであれば、
/src/Eccube/Repository/OrderDetailRepository.phpにCustomerとProductを渡して、購入回数を返してもらうメソッドを追加すると思います。 OrderRepository.phpのfunction getCustomerCount()の記述が参考になるのではないかと思います。 getCustomerCountの中では、joinが行われていないので他のメソッドのjoinの記述を参考にすればよいかと思います。
|
wa.shi |
投稿日時: 2019/4/11 10:43
対応状況: −−−
|
常連 登録日: 2018/2/20 居住地: 投稿: 45 |
Re: 商品の購入回数の取得について ご回答ありがとうございます。
頂きました内容を元に 実装を試みようと思います。 完了次第ご連絡致します。 |
wa.shi |
投稿日時: 2019/4/11 13:38
対応状況: −−−
|
常連 登録日: 2018/2/20 居住地: 投稿: 45 |
Re: 商品の購入回数の取得について 468様
お世話になっております。 お恥ずかしながら、 QueryBuilder初心者であり 大変苦戦しております。 いろいろ組んでみて 頭の中がこんがらがってしまいました・・・。 なにかヒント等ございましたら ご教示頂けますと幸いでございます。 |
468 |
投稿日時: 2019/4/11 18:43
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品の購入回数の取得について どういったカスタマイズをしようとして、どんな状態まで進んでいますか?
いきなり最終目的のデータを取得しようとせずに、まずは単純に注文詳細レコードの件数だけでも取得するようなQueryBuilderを記述されてみては如何でしょうか? CategoryRepositoryのfunction getTotalCount()がシンプルかもしれません。 提示いただいたコードの
の前に
みたいな感じでリポジトリクラスに定義したメソッドは呼び出せるのではないかと思います。 getCountは、OrderDetailRepository.phpに定義してください。
|
wa.shi |
投稿日時: 2019/4/12 10:39
対応状況: −−−
|
常連 登録日: 2018/2/20 居住地: 投稿: 45 |
Re: 商品の購入回数の取得について 468様
いつも大変お世話になっております。 ご回答いただきまして 誠にありがとうございます。 下記のようなSQL文をQueryBuilderに当てはめようと致しましたが 当てはめ方に大変苦戦致しました…。 引用:
おっしゃる通り、 最終目的データを追いかけて お恥ずかしながら混乱してしまいました。 ご提示頂きました一例を元に シンプルに一度組んでみようと思います。 ご丁寧に記述頂き 誠に感謝です。 |
468 |
投稿日時: 2019/4/12 11:02
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品の購入回数の取得について 提示いただいたソースでは、既に会員と商品が特定されていたと思いますのでSQLは以下のような感じになるかと思います。
WHEREでcustomer_id, product_idを指定してしまえば、 GROUPで集約した結果の1行分のレコードのみを取り出す事と同義になります。 もし、SQLには慣れておられるのであれば、 QueryBuilderでハマるかもしれないのはWHERE等のパラメータの渡し方かもしれません。 QueryBuilder(Doctrine)では、以下のような感じでWhere句を指定していきますが、 パラメータに渡す$Customerは、customer_idではなくCustomerエンティティのインスタンスである必要があります。
SQLで考えるとcustomer_idのカラムを条件に指定しようと考えてしまうかもしれませんが(私は最初そうでした) 上手くいかず、かなり悩みましたので...
|
wa.shi |
投稿日時: 2019/4/12 13:42
対応状況: −−−
|
常連 登録日: 2018/2/20 居住地: 投稿: 45 |
Re: 商品の購入回数の取得について 468様
いつも大変お世話になっております。 本件、いろいろとご教示頂きましたおかげさまで 解決致しました! 誠にありがとうございます。 以下のQueryBuilderを OrderDetailRepositoryにて追記致しました。 引用:
ただし、実はまた別の問題が発生しまして… 販売回数制限を超えた際、 カートページにて 該当エラーメッセージが 表示され該当商品が削除される仕様に致しましたが、 販売回数制限を超えていない場合 購入ページにて、 リロードや支払い方法を選択すると ページの再読み込みが起き、自動的に受注情報が更新され 同時購入回数も増え、 カートページに戻され、エラーとなってしまうように なりました(><) ひと難過ぎてまたひと難ですね。。 どうにか回避する方法を調査中でございます。 |
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |