假设我们有一组实体:
$entities = $em->getRepository('MyBundle:Entity')->findBy(array('cat' => 1));
通过ID从这个集合中获取单个实体的最佳方法是什么?当然,我可以用循环或array_filter
搜索它,例如:
$entity = null;
foreach ($entities as $_entity) {
if ($_entity->getId() == $id) {
$entity = $_entity;
break;
}
}
但也许Symfony / Doctrine方法有一个构建吗?
答案 0 :(得分:2)
您好,您可以使用ArrayCollection类中的过滤方法,但它与您正在进行的循环实体没有太大区别
$idToSearch = $n;
$newCollection = $entities->filter(
function($entity) use ($idToSearch) {
return $entity->getId() == $idToSearch;
}
);
答案 1 :(得分:1)
你需要使用foreach
来迭代它们,尽管它的扩展性非常差。根据您期望的结果数量,简单地运行两个查询可能会更快。