2016-07-07 69 views
0

我可以使用FindBy過濾與ManyToOne關係相關的數據嗎? 例如...我可以使用FindBy過濾與ManyToOne關係關聯的數據嗎?

租車實體:

/** 
* @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編輯字段: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] 
    ]); 
相關問題