Ошибка при использовании метода findBy() в Symfony3

У меня есть простой контроллер следующим образом:

public function fetchDataAction($username){
    $user_email = $this -> getDoctrine()
        -> getRepository('AdminBundle:Users')
        -> findBy( array('username' => $username ), array('id' => 2));

    return $this -> render('AdminBundle:Admin:fetchData.html.twig', array('datas' => $user_email));
}

Но при запуске кода я сталкиваюсь с ошибкой:

Invalid order by orientation specified for AdminBundle\Entity\Users#userId

При передаче одного массива методу findBy() код выполняется без ошибок, но когда я передаю несколько массивов, происходит сбой!

В чем проблема?


person ahoora    schedule 29.05.2017    source источник
comment
Чего именно вы хотите добиться?   -  person Mateusz Sip    schedule 29.05.2017
comment
Я хочу добавить записи, которые удовлетворяют одному из моих условий (оператор ИЛИ), а не всем моим условиям   -  person ahoora    schedule 29.05.2017


Ответы (1)


Проблема в том, что вторым параметром findBy является порядок сортировки. Передача array('id' => 2) в качестве порядка сортировки вызывает вашу ошибку (если вы прочитали ее текст).

Таким образом, решение состоит в том, чтобы передать оба критерия фильтра в одном массиве:

-> findBy( array('username' => $username, 'id' => 2) );
person u_mulder    schedule 29.05.2017
comment
Мне нужны записи с username = $username ИЛИ записи с id = 2. Я думаю, что ваша рекомендация дает этим записям username = $username И записям, имеющим id = 2. Я прав? - person ahoora; 29.05.2017
comment
Да, ты прав. В вашем случае это stackoverflow.com/questions /34003492/ - person u_mulder; 29.05.2017
comment
Спасибо, но ссылки не помогли! Вы знаете, что я делаю в соответствии с документом Symfony symfony.com/ doc/current/, но результат нежелателен. - person ahoora; 30.05.2017