Я хотел бы, если это возможно (и как) использовать силу отношений OneToMany как фильтр findBy.Symfony2/Doctrine: findBy with OneToMany мощность
Например, здесь у меня есть два объекта 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). Методы поиска работают только над собственными ассоциациями. – jkucharovic