抽象クラス 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;
}
製品が ProductWithRecurring のインスタンスである場合、いくつかの混合製品を取得し、「繰り返し」エンティティ情報を取得する必要があります。このdqlを使用してProductRepositoryにメソッドがあります:
$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 の専門家でもありません)。
コードにエラーがある可能性があります。問題を切り分けるために単純化しました。
私の英語はあまり上手ではありません。理解していただければ幸いです。ありがとうございます。