我正在尝试制作产品过滤器,但无法生成正确的查询
А快速查看基地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;
}