我可以使用FindBy过滤与ManyToOne关系相关的数据吗?

时间:2016-07-07 16:18:45

标签: symfony many-to-one findby

我可以使用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,我的twig转储将如下所示:

enter image description here

Basicaly我想只获得带有fkKlient.nip == 22222222(在此示例中)的汽车

2 个答案:

答案 0 :(得分:0)

这是什么回报:

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

我不确定你的实体,所以我不确定这是不是答案。试试吧。

答案 1 :(得分: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]
    ]);