Я получаю сообщение об ошибке:
Type error: Argument 2 passed to AppBundle\Repository\CategoryRepository::__construct()
must be an instance of AppBundle\Repository\ClassMetadata,
instance of Doctrine\ORM\Mapping\ClassMetadata given,
called in C:\_DEV_SF3_\fs3_tree\vendor\doctrine\orm\lib\Doctrine\ORM\Repository\DefaultRepositoryFactory.php on line 68
500 Internal Server Error - FatalThrowableError
Я использую:
Symfony v3.0.6;
Doctrine v2.5.4
StofDoctrineExtensionsBundle
для управления древовидной структурой.
Чтобы настроить репозиторий дерева с использованием трейтов, я делаю, как в документация. И я получаю ошибку, которая показана в начале вопроса. Обратите внимание, что если я настрою древовидный репозиторий, расширив абстрактный репозиторий, как указано в документация у меня есть другая ошибка
Как я могу предоставить «экземпляр AppBundle\Repository\ClassMetadata» для второго аргумента?
Мое хранилище деревьев
// AppBundle\Repository\CategoryRepository.php
<?php
namespace AppBundle\Repository;
use Gedmo\Tree\Traits\Repository\ORM\NestedTreeRepositoryTrait;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\EntityManager;
class CategoryRepository extends EntityRepository
{
use NestedTreeRepositoryTrait;
public function __construct(EntityManager $em, ClassMetadata $class)
{
parent::__construct($em, $class);
$this->initializeTreeRepository($em, $class);
}
}
Моя категория объекта
// AppBundle\Entity\Category.php
<?php
namespace AppBundle\Entity;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @Gedmo\Tree(type="nested")
* @ORM\Table(name="categories")
* use repository for handy tree functions
* @ORM\Entity(repositoryClass="AppBundle\Repository\CategoryRepository")
*/
class Category
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
private $id;
/**
* @ORM\Column(length=64)
*/
private $title;
/**
* @Gedmo\TreeLeft
* @ORM\Column(type="integer")
*/
private $lft;
/**
* @Gedmo\TreeLevel
* @ORM\Column(type="integer")
*/
private $lvl;
/**
* @Gedmo\TreeRight
* @ORM\Column(type="integer")
*/
private $rgt;
/**
* @Gedmo\TreeRoot
* @ORM\ManyToOne(targetEntity="Category")
* @ORM\JoinColumn(referencedColumnName="id", onDelete="CASCADE")
*/
private $root;
/**
* @Gedmo\TreeParent
* @ORM\ManyToOne(targetEntity="Category", inversedBy="children")
* @ORM\JoinColumn(referencedColumnName="id", onDelete="CASCADE")
*/
private $parent;
/**
* @ORM\OneToMany(targetEntity="Category", mappedBy="parent")
* @ORM\OrderBy({"lft" = "ASC"})
*/
private $children;
public function getId()
{
return $this->id;
}
public function setTitle($title)
{
$this->title = $title;
}
public function getTitle()
{
return $this->title;
}
public function getRoot()
{
return $this->root;
}
public function setParent(Category $parent = null)
{
$this->parent = $parent;
}
public function getParent()
{
return $this->parent;
}
/**
* Constructor
*/
public function __construct()
{
$this->children = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Set lft
*
* @param integer $lft
*
* @return Category
*/
public function setLft($lft)
{
$this->lft = $lft;
return $this;
}
/**
* Get lft
*
* @return integer
*/
public function getLft()
{
return $this->lft;
}
/**
* Set lvl
*
* @param integer $lvl
*
* @return Category
*/
public function setLvl($lvl)
{
$this->lvl = $lvl;
return $this;
}
/**
* Get lvl
*
* @return integer
*/
public function getLvl()
{
return $this->lvl;
}
/**
* Set rgt
*
* @param integer $rgt
*
* @return Category
*/
public function setRgt($rgt)
{
$this->rgt = $rgt;
return $this;
}
/**
* Get rgt
*
* @return integer
*/
public function getRgt()
{
return $this->rgt;
}
/**
* Set root
*
* @param \AppBundle\Entity\Category $root
*
* @return Category
*/
public function setRoot(\AppBundle\Entity\Category $root = null)
{
$this->root = $root;
return $this;
}
/**
* Add child
*
* @param \AppBundle\Entity\Category $child
*
* @return Category
*/
public function addChild(\AppBundle\Entity\Category $child)
{
$this->children[] = $child;
return $this;
}
/**
* Remove child
*
* @param \AppBundle\Entity\Category $child
*/
public function removeChild(\AppBundle\Entity\Category $child)
{
$this->children->removeElement($child);
}
/**
* Get children
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getChildren()
{
return $this->children;
}
}
Пожалуйста, порекомендуйте. Спасибо за ваше время и знания.