2014-09-09 2 views
0

У меня есть следующий скрипт в symfonyproject.find() против createQuery

use Rowoco\AllgemeinBundle\Entity\Place; 
. 
. 

public function getPlacelist($iduser) 
{ 
    $em = $this->getDoctrine()->getManager(); 
    $request = Request::createFromGlobals(); 

    $placeRepo = $em->getRepository("RowocoAllgemeinBundle:Place"); 
    $placeEntity = $placeRepo->findBy(
     array(), 
     array(), 
     $request->request->get("limitCount"), 
     $request->request->get("limitStart") 
    ); 
    //return $placeEntity; 

    $q = $em 
     ->createQuery("SELECT p.description 
          FROM RowocoAllgemeinBundle:Place p 
          "); 
    return $q->getResult(); 

} 

У меня нет специального репозитория или нет. Но когда я использую findby(), то я не получаю результата. Когда вы используете createQuery, я получил 2 строки в качестве результата.

Можете ли вы сказать мне, где я могу найти ошибку в своем коде?

+1

В вашем коде нет условия в findBy(), любое, если вы хотите получить все результаты, а затем findAll() вместо findBy(). –

ответ

1

findBy ожидает массив ключевых/значений, как этот:

array(
    'id' => 5, 
    'name' => 'john', 
    'friends' => array(1,23) 
); 

Как вы можете видеть в последней записи, вы также можете передать массив, который имеет effed из WHERE … IN() запроса. То, что вы не можете (AFAIK) переходить на findBy, - это диапазоны и сложные узоры.

+0

Могу ли я использовать -> find ($ limitCount, $ limitStart, ORDER). Мне нужны все строки, упорядоченные по одной строке –

+1

'find' и' findBy' совершенно разные, 'find' - это супер-ярлык, чтобы получить ровно один объект объекта. – lxg

+1

Подсказка: хотя вы работаете с Symfony, вы должны использовать документацию Doctrine для исследования материалов, связанных с ORM. Например, материал findBy объясняется здесь: http://docs.doctrine-project.org/en/2.0.x/reference/working-with-objects.html#by-simple-conditions – lxg

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