0

私は問題を抱えており、ばかげたことを見逃しているのではないかと心配しています。しかし、私が見逃しているものを見るために同様の問題を探すのに苦労しています。

とにかく、私は製品エンティティを持っています:

<?php

class Product {
    private $productid;
    private $name;

    /**
     * @ORM\ManyToOne(targetEntity="MyNamespace\CategoryBundle\Entity\Category")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="categoryid", referencedColumnName="categoryid")
     * })
     */
    private $category;

    public function getCategoryPath()
    {
        $category = $this->category;
        $items = array($category);

        var_dump($category->getParent());
        while (null !== $category->getParent()) {
            $category = $category->getParent();

            $items[] = $category;
        }

        return $items;
    }

}

class Category {
    private $categoryid;
    private $name;

    /**
     * @var \Category
     *
     * @ORM\ManyToOne(targetEntity="MyNamespace\CategoryBundle\Entity\Category")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="parentid", referencedColumnName="categoryid")
     * })
     */
    private $parent;

    public function getParent()
    {
        return $this->parent;
    }
}

?>

そして私は試します:

<?php
$product = $entityManager->find('MyNamespaceProductBundle:Product', 10);
$categories = $product->getCategoryPath();
?>

問題は、カテゴリ配列に直接リンクされたカテゴリのみが含まれていることです。$category->getParent() は常に null を返し、mysql-general ログを見ると、親カテゴリに対して発生したクエリが表示されません。

私は何を間違っていますか?

4

1 に答える 1

0

私の推測では、次getCategoryPath()のように Category クラス内でメソッドを呼び出して、値getCategoryid()を返すだけです。categoryidそれで:

<?php

$product = $entityManager->find( 'MyNamespaceProductBundle:Product', 10 );
$category = $product->getCategoryid();
$categoryProducts = $entityManager->find( 'MyNamespaceCategoryBundle:Product',array( 'categoryid' => '$category' ) );

?>
于 2013-11-09T19:09:07.047 に答える