2016-10-17 1 views
-2

Я хотел бы использовать QueryBuilder с пользовательскими функциями быстрого доступа. Для Exemple:Лучший способ расширения доктрины QueryBuilder класс в symfony

Вместо записи в моей репо:

$this->createQueryBuilder('post')->where(...)->andwhere(...) 

использовать что-то вроде:

$this->createQueryBuilder('post')->isPublished() 

где isPublished() является своего рода метод shorcut для нескольких функций QueryBuilder (->where(...)->andwhere(...))

Thx заранее за вашу помощь.

+1

Я рекомендовал бы против него. Вместо этого я предлагаю метод/функцию 'isPublished (QueryBuilder $ qb)', ее тело вызовет вашу серию '$ qb-> где (...) -> andwhere (...)'. Таким образом, вы можете повторно использовать код, который, как я думаю, вы хотели бы сделать. –

+0

Как @JanMares говорит, просто создайте функцию репозитория для этого. – Richard

ответ

1

1) Создать свой класс репозитория, как это:

<?php 

namespace Entity; 

use Doctrine\ORM\EntityManager; 

class MyRepository extends EntityManager 
{ 

    public function isPublished() 
    { 

    } 
} 

2) В контроллере:

$entityManager = $this->get('doctrine.orm.entity_manager'); 
$entityManager->getRepository('MyBundle:MyRepository')->isPublished(); 
Смежные вопросы