2016-07-07 2 views
0

Могу ли я использовать FindBy для фильтрации данных, связанных с отношением ManyToOne? Например ...Могу ли я использовать FindBy для фильтрации данных, связанных с отношениями ManyToOne?

автомобиль Entity:

/** 
* @var string 
* @ORM\ManyToOne(targetEntity="Klient", inversedBy="nip") 
* @ORM\JoinColumn(name="fk_klient", referencedColumnName="nip") 
*/ 
private $fkKlient; 

Действие в контроллере:

$userKlientNip = '22222222'; 
    $cars = $this->getDoctrine()->getRepository('AdminBundle:Car')->findBy([ 
     // 'fkKlient.nip' => $userKlientNip 
     //... 
    ]); 

Если я бег FindBy с пустым массивом, моя веточка дамп будет выглядеть так:

enter image description here

Basicaly Я хочу, чтобы получить только автомобили с fkKlient.nip == 22222222 (в данном примере)

+0

Я думаю QueryBuilder это лучший способ добиться того, что вы хотите: HTTP: //doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/reference/query-builder.html –

ответ

0

Что делает это возвращение:

$userKlientNip = '22222222'; 
$cars = $this->getDoctrine()->getRepository('AdminBundle:Car')->findBy(
    array('fkKlient.nip' => $userKlientNip), 
); 

Я не уверен в вашей сущности, поэтому я не уверен, что это ответ. Попробуй.

+0

Он вернет: Unrecogniz ed field: fkKlient.nip 500 Внутренняя ошибка сервера - исключение ORMException – DevWL

0

Я был уверен, что это «не может делать вещи» ... но я точно его разработал ... Так что в принципе, «fkKlient.nip» не является ключом (неудивительно), но когда я обратитесь к фактическому ключу и сравните его с $ userKlientNip, как он есть (пример 1), он волшебным образом сделает то, что я искал. Кроме того, я мог бы определить значение как ассоциативный массив, и я бы получил тот же результат (пример 2).

Пример 1 - Действие в контроллере:

$userKlientNip = '22222222'; 
    $cars = $this->getDoctrine()->getRepository('AdminBundle:Car')->findBy([ 
     'fkKlient' => $userKlientNip 
    ]); 

Пример 2 - Действие в контроллере:

$userKlientNip = '22222222'; 
    $cars = $this->getDoctrine()->getRepository('AdminBundle:Car')->findBy([ 
     'fkKlient' => ['nip' => $userKlientNip] 
    ]); 
Смежные вопросы