学说父母,孩子关系保湿

时间:2013-11-09 18:59:08

标签: php symfony doctrine-orm doctrine

我遇到了问题,我恐怕错过了一些愚蠢的事情。但我正在努力寻找类似的问题,看看我错过了什么。

无论如何,我有一个产品实体:

<?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();
?>

问题是,categories数组只包含直接链接的类别。看起来似乎没有学说取得父类,所以$ category-&gt; getParent()将始终返回null,如果我查看mysql-general日志,我看不到为父类别引发的查询。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我的猜测是你应该像getCategoryPath()那样调用Category类中的getCategoryid()方法,然后返回categoryid值。然后:

<?php

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

?>