2016-11-15 15 views
1

ユーザーの電子メールを表示するために1つのグループのユーザー(グループusersとManyToOneの関係)を反復すると、 Entity of type 'AppBundle\Entity\User' for IDs id(155) was not found。私は例外が発生するユーザーを表示する場合しかし、私はこれを参照してくださいID「155」のID「AppBundle Entity User」のエンティティが見つかりませんでした

// In my controller 
dump($groups[0]->getUser()); 

// Output 
User {#761 ▼ 
    +__isInitialized__: false 
    #id: 155 
    #email: null 
    #firstName: null 
    #lastName: null 
    #roles: null 
    …2 
} 

加えて、(IDが155に等しい)、このユーザが自分のデータベースに存在しません。

UPDATE 1

public function getByCriteria(array $criteria) 
{ 
    $qb = $this->createQueryBuilder('g'); 
    // .... 


    return $qb 
      ->getQuery() 
      // This does NOT change anything ?? Isn't this supposed to load related user?? 
      // http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#temporarily-change-fetch-mode-in-dql 
      ->setFetchMode('class_namespace', 'user', ClassMetadata::FETCH_EAGER) 
      ->getResult(); 
} 
+0

あなたのグループ - >ユーザーの関連付けはどのようにロードされていますか?怠惰なローディングユーザーがアクティブではないようです。とにかくパフォーマンスのためにカスタムリポジトリフェッチ結合をお勧めします。 – LBA

答えて

1

それを考え出しました!実際には、すべてのSQLクエリに1つの条件を追加する有効なdoctrineフィルタがあります。 1つのグループを取得すると、そのグループに関連するユーザーはデータベースからロードされず、IDだけがグループエンティティでロードされます。 id以外のユーザーフィールドにアクセスしようとすると、sql joinクエリが実行されます。この場合も、doctrineフィルタは条件をジョイン条件に加えても空の結果につながります。

エラーメッセージは明らかに誤解を招きます。

+0

そしてどうやって修正しましたか? – johnwilliam25

+0

いくつかのソリューション: (1 - doctrineフィルタを編集して、その場でdoctrineクエリを削除する) ((2 - ネイティブクエリを実行しますが、doctrineフィルタでは編集されません)) – smarber

+0

doctrineクエリを編集するフィルタは、たとえば、EntityRepoからfindまたはfindByメソッドを呼び出すことはできますか?私はそれらを使用しているので、私はエラーを取得します。私は自分の方法を変えるものではないし、それが別の解決策かもしれないと思う。 – johnwilliam25

関連する問題