バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > OrderRepository に独自に追加した関数が呼ばれない

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2018/7/24 8:54
対応状況: 解決済
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1005
OrderRepository に独自に追加した関数が呼ばれない
カートページにおいて会員の今月の購入回数を表示したいと思い、 OrderRepository に独自に関数を追加したのですが、関数を呼ぼうとするとエラーになってしまいます。
どうすれば解決できるでしょうか?

■エラー
BadMethodCallException in EntityRepository.php line 226:
Undefined method 'getCustomerOrderCountThisMonth'. The method name must start with either findBy or findOneBy!

src/Eccube/Controller/CartController.php

    public function index(Application $app, Request $request)
    {
        …

        // 今月の購入回数
        $buy_times = 0;
        if ($app->isGranted('ROLE_USER')) {
            $buy_times = $app['eccube.repository.order']->getCustomerOrderCountThisMonth($app->user());
        }

        …
    }


src/Eccube/Repository/OrderRepository.php

    /**
     * 会員の今月の購入回数を取得
     *
     * @param  \Eccube\Entity\Customer $Customer
     * @return integer
     */
    public function getCustomerOrderCountThisMonth(\Eccube\Entity\Customer $Customer)
    {
        …

        return 0;
    }


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

x002dc
投稿日時: 2018/7/24 10:02
対応状況: −−−
半人前
登録日: 2018/6/27
居住地: 東京
投稿: 30
Re: OrderRepository に独自に追加した関数が呼ばれない
コード自体に特に問題ないように思えます。
実際、当方でも簡単ですが試したところ、特に問題なくメソッドはコールできました。

あとチェックするとしたら

Repositoryをインジェクションしている部分(EccubeServiceProvider.php)がデフォルトから変更されていないか?
Entityの定義ファイル(Eccube.Entity.Order.dcm.yml)が変更されていないか?

といったところでしょうか。
h_tanaka
投稿日時: 2018/7/24 10:05
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1005
Re: OrderRepository に独自に追加した関数が呼ばれない
Repository の他の箇所も Entity も変更した覚えはないんです。。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

468
投稿日時: 2018/7/24 10:08
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 2057
Re: OrderRepository に独自に追加した関数が呼ばれない
デフォルトのECCUBEに、ご提示いただいた内容を追記して確認してみましたが、
エラーは発生せずに正常に処理が完了しました。
実際のソースはどこかスペルミスをしているという事はありませんか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

x002dc
投稿日時: 2018/7/24 10:18
対応状況: −−−
半人前
登録日: 2018/6/27
居住地: 東京
投稿: 30
Re: OrderRepository に独自に追加した関数が呼ばれない
なるほど、それは謎現象ですね。。。

まずは、本当にコールされているOrderRepositoryがデフォルトのファイル(src/Eccube/Repository/OrderRepository.php)になっているかチェックしてみてはいかがでしょうか?


dump($app['eccube.repository.order']);exit;
$app['eccube.repository.order']
$buy_times = $app['eccube.repository.order']->getCustomerOrderCountThisMonth($app->user());


ちなみに、当方で正しくコールされた場合のdumpは以下のように期待するものでした。

CartController.php on line 44:
OrderRepository {#4369 ▼
  #app: Application {#15 ▶}
  #_entityName: "Eccube\Entity\Order"
  #_em: EntityManager {#702 …10}
  #_class: ClassMetadata {#3436 ▼
    +name: "Eccube\Entity\Order"
    +namespace: "Eccube\Entity"
    +rootEntityName: "Eccube\Entity\Order"
    +customGeneratorDefinition: null
    +customRepositoryClassName: "Eccube\Repository\OrderRepository"
    +isMappedSuperclass: false
h_tanaka
投稿日時: 2018/7/24 10:19
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1005
Re: OrderRepository に独自に追加した関数が呼ばれない
OrderRepository.php を中身そのままでファイルを更新したところ、エラーが消えました。
本当に謎現象です。。

x002dcさん、468さん、
お調べいただきありがとうございました。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

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


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は61,589名です
総投稿数は95,564件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
468
2057
4
nanasess
2039
5
yuh
1612
6
umebius
1588
7
red
1399
8
h_tanaka
1005
9
fukap
907
10
tsuji
863
11
shutta
835
12 ramrun 789
13
tao_s
783
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

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