ProductBundle异常:产品没有名称的字段或关联

时间:2015-08-10 09:33:44

标签: symfony doctrine-orm sylius

问题是$this->_getContainer()->get('sylius.repository.product')->findOneBy(array('my_attribute' => '1234'))抛出异常: [语义错误]第0行,第209页'my_attribute =:my_attribute'附近:错误:类Sylius \ Component \ Product \ Model \ Product没有名为my_attribute的字段或关联

这是什么原因? 我只使用干净的Sylius SyliusProductBundle,SyliusAttributeBundle和其他一些必需的。 保存具有不同属性的产品就像魅力一样,但尝试按任何非标准属性加载产品会导致此异常。 我没有扩展任何模型,我没有通过添加任何新属性来配置任何XML或YML。从EAV我希望即时创建一个必需的属性(哪个工作),而不必定义任何固定的属性。 例如。我想要葡萄酒(具有葡萄,年份)和汽车(带引擎,长度和类型)。

但也许我错了?怎么解决?你能提供一些例子吗?文档中的那个不能正常工作。

$this->_getContainer()->get('sylius.repository.product')->findAll()返回我数据库中的所有产品,但没有保存的属性或值。但是在表sylius_product,sylius_product_attribute,sylius_product_attribute_value中,一切看起来都没问题。

任何提示都表示赞赏。甚至是愚蠢的 - 我对Symfony 2来说是全新的。

1 个答案:

答案 0 :(得分:1)

您需要在产品库中定义自定义方法:

public function findByAttribute($attributeName, $value) 
{
    return $this->getQueryBuilder()
        ->join($this->getAlias() . '.attributes', 'av')
        ->join('av.attribute', 'a')
        ->where('av.value = :value')
        ->andWhere('a.name = :attributeName')
        ->setParameter('attributeName', $attributeName)
        ->setParameter('value', $value)
        ->getQuery()
        ->getResult();
}