我有一个抽象类Product和继承的类ProductWithRecurrency:
/**
* @ORM\Table(name= "product")
* @ORM\Entity(repositoryClass="Acme\StoreBundle\Entity\Repositories\ProductRepository")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="product_kind_id", type="integer")
* @ORM\DiscriminatorMap({"1" = "ProductFoo", "2" = "ProductWithRecurring"})
*/
abstract class Product
{
}
/**
*
* @ORM\Table(name="product_with_recurring")
* @ORM\Entity( repositoryClass ="Acme\StoreBundle\Entity\Repositories\ProductRepository")
*/
class ProductWithRecurring extends Product
{
/**
* @var Recurring $recurring
*
* @ORM\JoinColumn(name="recurring_id", referencedColumnName="id", nullable=false)
*/
protected $recurring;
}
当Product是ProductWithRecurring的实例时,我需要获得一些混合产品并具有“重复”实体信息。我在ProductRepository中有一个带有这个dql的方法:
$dql = "SELECT p product
FROM Acme\StoreBundle\Entity\Product p
LEFT JOIN p.recurring rc
WHERE p.some_conditions";
显然得到这个例外:
[Semantical Error] line 0, col 1182 near 'rc
': Error: Class Acme\StoreBundle\Entity\Product has no association named recurring
我是否应该增加查询的复杂性或者我有一个概念上的错误?(我不是Symfony的专家而是Doctrine的专家)。
代码中可能存在错误,我已将其简化以隔离问题。
我的英语不太好,我希望你理解我,谢谢!
答案 0 :(得分:0)
您应该能够访问Product ProductWithRecurring中的所有Product atributes。
使用以下代码不起作用?我不太明白你想要得到什么
$dql = "SELECT p
FROM Acme\StoreBundle\Entity\ProductWithRecurring p
WHERE p.some_conditions";