2016-07-07 68 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] 
    ]); 
相关问题