Symfony从EAV模型中检索Unique值



我正在尝试制作产品过滤器,但无法生成正确的查询

А快速查看基地db可视

以下是我的实体:

属性类型:

/**
* @ORMId()
* @ORMGeneratedValue()
* @ORMColumn(type="integer")
*/
private $id;
/**
* @ORMColumn(type="string", length=100, nullable=true)
*/
private $name;
/**
* @ORMOneToMany(targetEntity=AttributeValue::class, mappedBy="attributeType")
*/
private $attributeValue;
public function __construct()
{
$this->attributeValue = new ArrayCollection();
}

属性值:

/**
* @ORMId()
* @ORMGeneratedValue()
* @ORMColumn(type="integer")
*/
private $id;
/**
* @ORMManyToOne(targetEntity=Product::class, inversedBy="attributeValues")
*/
private $product;
/**
* @ORMColumn(type="string", length=100)
*/
private $value;
/**
* @ORMManyToOne(targetEntity=AttributeType::class, inversedBy="attributeValue")
*/
private $attributeType;

例如AttributeType(Color(具有AttributeValue(红、蓝、绿(&我检索一个单一颜色选项的一百个红、蓝、绿属性值

该查询返回所有值(非唯一(的选项:

return $this->createQueryBuilder('at')
->innerJoin('at.attributeValue', 'attribute_value')
->addSelect('attribute_value')
->getQuery()
->getResult();

我试图修改这样的请求:

return $this->createQueryBuilder('at')
->innerJoin('at.attributeValue', 'attribute_value')
->addSelect('attribute_value.value')->distinct()
->getQuery()
->getResult();

(还有其他尝试,但都不太接近(

如何获得每个选项的唯一值

我将感谢的任何帮助

谢谢你的时间。

我为每个选项获得唯一的值

public function findOptionsWithUniqueValue()
{
$result = $this->getEntityManager()->createQueryBuilder()
->addSelect('attribute_type.name, attribute_value.value')
->distinct()
->from(AttributeType::class,'attribute_type')
->from(AttributeValue::class, 'attribute_value')
->andWhere('attribute_type.id = attribute_value.attributeType')
->getQuery()
->getResult()
;
$out = [];
while( $a = array_shift($result)) {
$out[$a['name']][] = $a['value'];
}
return $out;
}

最新更新