Я хотел бы включить некоторые дополнительные функции в мои сущности Doctrine 2, чтобы они содержали код, который мне придется выполнять довольно часто.Например:
Пользователь - имеет много сообщенийПост - имеет одного пользователя
У меня уже есть функция $user->getPosts()
, но это возвращает все мои сообщения.Я ищу написать $user->getActivePosts()
, который будет выглядеть так:
$user->getPosts()->where('active = true') //if this were possible
или же:$em->getRepository('Posts')->findBy(array('user'=>$user,'active'=>true)) //if this were more convenient
Насколько я могу судить, нет способа вернуться к менеджеру сущностей через саму сущность, поэтому мой единственный вариант будет
class User {
function getActivePosts() {
$all_posts = $this->getPosts();
$active_posts = new ArrayCollection();
foreach ($all_posts as $post) {
if ($post->getActive()) {
$active_posts->add($post);
}
}
return $active_posts;
}
Однако это требуетя загружаю ВСЕ посты в свой менеджер сущностей, когда я действительно хочу только небольшое их подмножество, и это требует от меня фильтрации в PHP, когда это было бы гораздо более уместно сделать на уровне SQL.Есть ли способ выполнить то, что я ищу, внутри сущности, или мне нужно создавать код вне нее?