2013-12-25 2 views
2
$em = $this->getDoctrine()->getManager(); 
$query = $em->createQuery(
'SELECT p 
FROM AcmeStoreBundle:Product p 
WHERE p.price > :price 
ORDER BY p.price ASC' 
)->setParameter('price', '19.99'); 

$products = $query->getResult(); 

Я немного запутался в двоеточии и в разных местах, которые он может использовать в запросе. Я думаю: цена объявляет цену как локальную переменную, которая будет заменена на 19.99 во время выполнения.Оператор: для запросов DQL

1) Правильно ли это предположение?

2) Есть ли другие места, где вы видите ':' в DQL, поэтому я не путаю его с другими его функциями.

ответ

2

Оператор двоеточия : используется для подготовленных инструкций. Это похоже на символ $ для переменных имен в PHP, но посвященных Doctrine.

Возможно, вы заметили, что у AcmeStoreBundle:Product есть внутренняя часть, но это функция Symfony, в которой вы можете определить Bundle, к которому принадлежит Entity. Другого способа использования оператора в Doctrine нет.

3

1) Is the aforementioned assumption correct?

Да, :price на самом деле parameter, который используется, чтобы избежать некрасивых код, как это:

"SELECT ... WHERE p.price > " . $price 

Вместо этого используется обозначение параметров, и после вызова метода setParamter():

->setParameter('price', '19.99'); << Without prefix 

More info from the doc

2) Are there some other places you see the ':' in DQL so I don't confuse it with its other functions.

Я не знаю, что :)

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

  • Нет связанных вопросов^_^