2016-07-07 2 views
0

Puis-je utiliser FindBy pour filtrer les données associées à une relation ManyToOne? Par exemple ...Puis-je utiliser FindBy pour filtrer les données associées à la relation ManyToOne?

voiture Entité:

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

action dans le contrôleur:

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

Si je lance findBy avec un tableau vide, ma branche Le vidage ressemblera à ceci:

enter image description here

Je veux Fondamentalement obtenir seulement les voitures avec fkKlient.nip == 22222222 (dans cet exemple)

+0

Je pense que QueryBuilder est la meilleure façon d'obtenir ce que vous voulez: http: //doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/reference/query-builder.html –

Répondre

0

Qu'est-ce que ce retour:

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

Je ne suis pas certain de votre entités, donc je ne suis pas sûr si c'est la réponse. Essayez-le.

+0

Renvoie: Champ de saisie: fkKlient.nip 500 Erreur interne du serveur - ORMException – DevWL

0

J'étais assez sûr que c'est "ne peut pas faire chose" ... mais je l'ai finement travaillé ... Donc, fondamentalement, 'fkKlient.nip' n'est pas une clé (pas de surprise là-bas), mais quand je référez-vous à la clé actuelle et comparez-la par rapport à $ userKlientNip tel qu'il est, (exemple 1) il fera ce que je recherchais par magie. Aussi, je pourrais définir la valeur comme un tableau associatif et j'obtiendrais le même résultat (exemple 2).

Exemple 1 - action dans le contrôleur:

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

Exemple 2 - action dans le contrôleur:

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