2014-01-03 2 views
0

Это то, что я хочу сделать:Доктрина выбрать, где переменная равна

$query = $repository->createQueryBuilder('c') 
    ->where('c.categoryParentid = ?', $pcategory->getcategoryId()) 
    ->orderBy('c.categoryId', 'ASC') 
    ->getQuery(); 

$childcategories = $query->getResult(); 

$pcategory->getcategoryId() представляет собой целое число. Где, это правильно? я получаю эту ошибку:

ContextErrorException: Warning: get_class() expects parameter 1 to be object, integer given in /Applications/mampstack-5.4.20-0/apache2/htdocs/reuzze/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Expr/Base.php line 92 

ответ

3

Я не использовал этот синтаксис раньше, но документы Symfony есть примеры using the query builder, и они показывают что-то вроде этого:

$query = $repository->createQueryBuilder('c') 
->where('c.categoryParentid = :pcategory') 
->setParameter('pcategory', $pcategory->getcategoryId()) 
->orderBy('c.categoryId', 'ASC') 
->getQuery(); 
+0

Спасибо! работает отлично! – nielsv

+0

Свойство на вашей модели должно быть категорииParent и содержать объект, а не идентификатор. – Jessica

0

Вы можете также использовать EntityRepository::findBy() (оговорено в документации Symfony 2.x here), которая позволяет указать критерии поиска и сортировку.

например.

$childCategories = $repository->findBy(array(
    'categoryParentId' => $pcategory->getCatagoryId() 
), 
    array(
    'categoryId' => 'ASC' 
) 
); 
Смежные вопросы