2016-07-07 28 views
0

Kann ich mit FindBy Daten filtern, die mit einer ManyToOne-Beziehung verknüpft sind? Zum Beispiel ...Kann ich FindBy verwenden, um Daten zu filtern, die mit der ManyToOne-Beziehung verknüpft sind?

Car Entity:

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

Aktion in der Steuerung:

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

Wenn ich FindBy mit einem leeren Array, mein Zweig laufen Dump wird wie folgt aussehen:

enter image description here

basicaly möchte ich nur Autos mit fkKlient.nip == 22.222.222 (in diesem Beispiel)

+0

Ich denke, Querybuilder ist der bessere Weg zu erreichen, was Sie wollen: http: //doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/reference/query-builder.html –

Antwort

0

Was bedeutet diese Rückkehr zu bekommen:

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

Ich bin nicht sicher Ihrer Entitäten, also bin ich mir nicht sicher, ob dies die Antwort ist. Versuch es.

+0

Es würde zurückgeben: Nicht erkannt ed Feld: fkKlient.nip 500 Interner Serverfehler - ORMException – DevWL

0

Ich war ziemlich sicher, es ist "kann nicht tun" ... aber ich habe es ausgearbeitet ... Also im Grunde ist "fkKlient.nip" kein Schlüssel (keine Überraschung), aber wenn ich beziehen Sie sich auf den tatsächlichen Schlüssel und vergleichen Sie es mit $ userKlientNip, wie es ist, (Beispiel 1) wird es magisch tun, was ich suchte. Auch könnte ich den Wert als assoziatives Array definieren und ich würde das gleiche Ergebnis erhalten (Beispiel 2).

Beispiel 1 - Aktion in der Steuerung:

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

Beispiel 2 - Aktion in der Steuerung:

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