2013-04-10 5 views
1

a есть немного сомнений с QueryBuilder и Doctrine Query.Doctriine Query VS QueryBuilder Symfony 2.0

Я имел обыкновение использовать простой запрос в хранилище, такие как:

$em = $this->getEntityManager(); 
$dql = "select X from ApuestaBundle:Apuesta X ORDER BY X.Jornada DESC"; 
$query = $em->createQuery($dql); 
$entity = $query->getResult(); 

Но я должен был изменить функцию «(контекст =„список“$) CreateQuery» из класса администратора сонаты для фильтрации объектов чтобы показать, и я должен был использовать Query Builder, как это:

public function createQuery($context = 'list'){ 
    $query = $this->getModelManager()->createQuery($this->getClass(), 'entity'); 

    $query->select ('e'); 
    $query->from($this->getClass(), 'e'); 
    $query->from('CoreBundle\Entity\Resource', 'r'); 
    $query->where('e.id = r.id AND r.company = :company'); 
    $query->setParameter('company', 1); 

    return $query; 
} 

Итак, вот мой вопрос, что различия с помощью запроса или QueryBuilder. Потому что таким образом я не мог вызвать функцию репозитория для изменения функции createQuery в классе администратора.

Спасибо!

ответ

0

ответить на ваш первый вопрос, различие, в общих чертах доктрин являются следующим:

Query это объект, который представляет собой запрос DQL. Методы на нем в основном связаны с такими вещами, как гидратация и получение результатов запроса: например, getResult(), getArrayResult(), getSQL()

A QueryBuilder - это жидкий способ создания DQL-запроса. Методы в основном связаны с добавлением/изменением предложений DQL: например. select(), from(), где()

Однако я не уверен насчет Sonata ProxyQueryInterface, который возвращается из ModelManagerInterface :: createQuery().

Смежные вопросы