无法按ID访问父实体属性

时间:2015-04-08 15:59:42

标签: symfony orm doctrine-orm doctrine twig

我想弄清楚为什么我无法访问Category实体的父实体的 name (或任何属性)。我的视图工作正常,并显示父信息以外的所有属性。

我要找的是父母的名字(即“内部”),而不是ID。但我似乎无法访问它。

namespace AyrshireMinis\CarBundle\Entity;

class Category
{
    /**
     * @var integer
     */
    protected $id;

    /**
     * @var integer
     */
    protected $parent_id;

    /**
     * @var Category
     */
    protected $parent;

    public function __construct() {}

    /**
     * @return int
     */
    public function getParentId()
    {
        return $this->parent_id;
    }

    public function getParent()
    {
        return new self($this->parent_id);
    }
}

我的学说实体映射:

fields:
    parent_id:
        type: integer
        length: 11
        nullable: true

在我的Twig模板中,我试图提取父类别的名称,如下所示:

<td>
   {{ category.parent.name }}
</td>

但是,我没有错误,但没有类别名称。

这是我的SQL GUI的简要视图:

enter image description here

该表是分层的。

2 个答案:

答案 0 :(得分:2)

public function getParent()
{
    return new self($this->parent_id);
}

您在这里所做的是创建一个所有属性为空的新类别。请查看symfonydoctrine文档,了解如何正确创建关系。

答案 1 :(得分:0)

我最终解决了这个问题,方法是从我的ORM映射中删除parent_id并将其替换为:

manyToOne:
    parent:
        targetEntity: AyrshireMinis\CarBundle\Entity\Category
        inversedBy: children

然后将这些成员变量添加到我的Category实体类:

/**
* @var Category
*/
private $children;

/**
* @var Category
*/
private $parent;