4

抽象クラス 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 の専門家でもありません)。

コードにエラーがある可能性があります。問題を切り分けるために単純化しました。

私の英語はあまり上手ではありません。理解していただければ幸いです。ありがとうございます。

4

1 に答える 1

0

Product ProductWithRecurring のすべての Product 属性にアクセスできる必要があります。

以下のコードを使用しても機能しませんか? 結果として何を得たいのかよくわかりません

$dql = "SELECT p
    FROM Acme\StoreBundle\Entity\ProductWithRecurring p
    WHERE p.some_conditions";
于 2013-05-06T08:28:03.780 に答える