簡體   English   中英

父母,子女關系水合主義

[英]Doctrine parent, child relationship hydration

我遇到問題,恐怕我缺少一些愚蠢的東西。 但是,我正在努力尋找類似的問題,以了解自己的缺失。

無論如何,我有一個產品實體:

<?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日志,則不會看到針對父類的查詢。

我究竟做錯了什么?

我的猜測是,您應該像在getCategoryid()類的Category類中調用getCategoryPath()方法,並只返回categoryid值。 然后:

<?php

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

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM