我在实体之间有一个多对多关联:(产品和类别)在 Symfony2 中,使用 Doctrine2。
我想列出每个类别,然后列出该类别中的每个唯一产品名称。每个产品显然可以分为许多类别(有些类别是空的)。
这是我必须使用基本实体管理器方法等的方法。注释是 PHPStorm 的提示,以便代码自动完成工作。:
$repository = $this->getDoctrine()->getRepository('SomeRandomBundle:Category');
$categories = $repository->findAll();
$response = '';
/** @var $category Category */
foreach ($categories as $category){
$products = $category->getProducts();
if (!$products->isEmpty()){
$productArr = array();
/** @var $product Product */
foreach ($products as $product){
$productArr[] = $product->getName();
}
$productArr = array_unique($productArr);
$response .= $category->getName() . "\n";
foreach ($productArr as $prod){
$response .= "\t$prod\n";
}
}
}
这在 DB 上有 30 次点击。(29 个类别)所以没关系。我的问题是想从 \Doctrine\Common\Collections\Collection 中获取唯一的产品名称
你可以看到我复杂的代码循环遍历产品名称,将它们放在一个数组中,然后在其上调用 array_unique。当然可以,但必须有一种更优雅的方式。