バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2018/7/24 8:54
対応状況: 解決済
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
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
居住地: 愛媛県
投稿: 1610
Re: OrderRepository に独自に追加した関数が呼ばれない
Repository の他の箇所も Entity も変更した覚えはないんです。。


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

468
投稿日時: 2018/7/24 10:08
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
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
居住地: 愛媛県
投稿: 1610
Re: OrderRepository に独自に追加した関数が呼ばれない
OrderRepository.php を中身そのままでファイルを更新したところ、エラーが消えました。
本当に謎現象です。。

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


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

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


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.