【发布时间】:2015-03-17 18:39:26
【问题描述】:
早安,
我有一个类 Cars 和类 CarTypes 在多对多关系中,Cars 包含一个 ArrayCollection 汽车类型。我想搜索满足多个选定 CarTypes 中的任何一个的汽车(从数组中的表单传递)。
到目前为止,我只能想到三个嵌套循环,第一个在 Cars 上,第二个在 ids 数组上的内循环(来自表单)和 ArrayCollection 上的第三个内循环Cars 中的 CarTypes 以检查来自 2nd 循环的值是否存在于 3rd 中。
我已经检查了以下与关闭相关的链接。但是文档中的这些或没有任何链接提供了有关如何将一组选定的 ids 与 ArrayCollection 中的 ids 匹配的足够详细信息。
Doctrine 2 ArrayCollection filter method
Doctrine 2, query inside entities
我有自定义存储库,但感觉最好在 Cars 类中使用 ArrayCollection 的 exists 来实现它,可能类似于以下内容:
public function existsCarTypes($ctArray)
{
$CarTypes = $this->CarTypes;
return $CarTypes->exists(
function($CarTypes) use ($ctArray)
{
if (in_array($ctArray , $CarTypes->getId() ))
{
return true;
}
return false;
}
);
}
但这不起作用,有没有更好的方法来做到这一点,请提供任何好的文档链接。
【问题讨论】:
标签: php symfony doctrine-orm