FindByフィルタとしてOneToManyリレーションシップカーディナリティを使用することができますか(どのように)したいですか。Symfony2/Doctrine:OneToManyカーディナリティを持つfindBy
ここでは、ユーザーが投稿のコレクションを持つように、2つのエンティティUser
とPost
の間にOneToMany関係があるとします。私は、少なくとも一つのポストを持っているすべてのユーザーを取得する方法を探しています
、それは言うことです:
|user.posts| >= 1
以上のプログラムでcount(user->getPosts()) >= 1
私は、これはQueryBuilderやDQLで達成することができます知っているが、 findBy
で動作させることができるトリックがあると確信しています。ここで
は私が行うには喜んで何の考えである:コメント欄で
class UserRepository extends EntityRepository
{
public function myQuery()
{
return $this->findBy(
array(... 'posts' ...), // What should I put here ?
array('email' => 'ASC')
);
}
}
をごquerybuilderを使用して、ポストレコード – Matteo
のカウントになる条件を設定する必要がではありません*少なくとも一つのポストを持ちます*この場合、内部結合と同じですか?しかし、あなたがしたいことはできません。カウントのために、group by節が必要です。これは、 'findBy'を使うときには利用できません。 – Yoshi
[関連フィールドは関連の反対側であるため、検索できません](https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/ORMException.php#L190-L203) )。 Findメソッドは、サイド・アソシエーションを所有する場合にのみ機能します。 – jkucharovic