我正在为我的无头 symfony 后端创建一个简单的 CMS Bundle,我正在尝试将页面映射到具有父子关系的页面(许多孩子到一个父母)并且我有这个类映射超类来创建可重用的代码,这是一个缩小的我要存档的示例:
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\MappedSuperclass()
*/
class Test
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function getId()
{
return $this->id;
}
/**
* @ORM\ManyToOne(targetEntity="Ziebura\CMSBundle\Entity\Test")
*/
protected $parent;
public function getParent()
{
return $this->parent;
}
public function setParent($parent)
{
$this->parent = $parent;
}
}
然后我将这个类扩展为一个普通实体来创建数据库表
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Ziebura\CMSBundle\Entity\Test as BaseTest;
/**
* @ORM\Table(name="test")
* @ORM\Entity(repositoryClass="App\Repository\TestRepository")
*/
class Test extends BaseTest
{
}
问题是我得到了这个学说例外
Column name `id` referenced for relation from App\Entity\Test towards Ziebura\CMSBundle\Entity\Test does not exist.
我不太明白为什么它会产生这个错误,或者我试图归档的东西是不可能的,我已经在映射的超类上做了关系,但它是 2 个或更多表,而不仅仅是一个。我已经尝试创建 $children 字段,但它没有工作并且仍然产生上述错误。有没有人尝试创造类似的东西?我在教义文档中找不到任何关于此的内容,只找到了如何映射 2 个不同的超类。我想最简单的方法是在 App 命名空间中指定关系而不是在 Bundle 中,但如果我必须在每个项目中声明我使用 bundle 的话,这几乎破坏了可重用代码的目的。我相信堆栈让我们弄清楚这一点。谢谢!
慕码人2483693
收到一只叮咚