1

我想为我的 Symfony2 应用程序使用 DoctrineExtensions 的树功能。

但我得到这个错误:

Tree object class: MyBundle\Entity\Category must have tree metadata at this point.

Symfony:v2.5.3

共同教义:v2.4.2

教义扩展:大师

<?php

namespace MyBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;

/**
 * Category
 * @Gedmo\Tree(type="nested")
 * @ORM\Table(name="category", uniqueConstraints={@ORM\UniqueConstraint(name="id", columns={"id"})})
 * use repository for handy tree functions
 * @ORM\Entity(repositoryClass="Gedmo\Tree\Entity\Repository\NestedTreeRepository")
 */
class Category
{
    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

     /**
     * @Gedmo\TreeLeft
     * @ORM\Column(name="lft", type="integer")
     */
    private $lft;

    /**
     * @Gedmo\TreeLevel
     * @ORM\Column(name="lvl", type="integer")
     */
    private $lvl;

     /**
     * @Gedmo\TreeRight
     * @ORM\Column(name="rgt", type="integer")
     */
    private $rght;

    /**
     * @Gedmo\TreeRoot
     * @ORM\Column(name="root", type="integer", nullable=true)
     */
    private $root;

     /**
     * @Gedmo\TreeParent
     * @ORM\ManyToOne(targetEntity="Category", inversedBy="children")
     * @ORM\JoinColumn(name="parentId", referencedColumnName="id", onDelete="CASCADE")
     */
    private $parentid;

    /**
     * @ORM\OneToMany(targetEntity="Category", mappedBy="parentid")
     * @ORM\OrderBy({"lft" = "ASC"})
     */
    private $children;

我按照这个文档在 Symfony2 中安装 Gedmo Doctrine2 扩展,但似乎有问题。

4

2 回答 2

1

也许这会对某人有所帮助。在我的情况下,我重新启动了网络服务器和 fpm,这个错误就消失了。

于 2019-01-09T09:49:34.737 回答
0

我看到这个问题已经在 3 年前被问过了,但无论如何。我想问题是你必须在 CategoryRepository 构造函数中初始化学说树,所以你需要在你的 repo 中使用这段代码:

use NestedTreeRepositoryTrait;
$this->initializeTreeRepository($em, $class);
于 2018-02-09T15:41:59.020 回答