我一直在使用Symfony应用程序中的注释来定义ORM映射和条令。
我想更改一个名为“author”的现有字符串属性,以便它现在可以作为对用户实体的引用。我根据以下内容更改属性定义上方的注释:
/**
* @var string
*
* @ORM\Column(name="author", type="string", length=255)
*/
... 对此:
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="FOS\UserBundle\Model\User", cascade={"all"})
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
现在的问题是:当我跑步的时候
doctrine:migrations:diff
为了生成迁移,我收到一条消息:“在映射信息中未检测到任何更改。”
同样,当我跑步时
doctrine:schema:update
,我收到一条消息,说“无需更新-您的数据库已与当前实体元数据同步。”
===
更新:删除数据库并重新运行安装后,我现在在运行时收到以下错误消息
条令:迁移:差异
:
[条令\ORM\or例外]
列名称
id
从AppBundle\Entity\Post到FOS\UserBundle\Model\User的关系引用不存在。
这甚至是
DESC users
返回以下内容:
mysql> DESC users;
+-----------------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(180) | NO | | NULL | |
...
... 所以我比我原来的位置要远一点,但我的基本问题仍然适用:
为了让条令在本专栏上愉快地构建多通映射,还需要什么信息或行动?
===
附加编辑:多亏了goto的回答,我四处看了看,发现我们的应用程序已经有了一个扩展FOS UserBundle实体的实体。因此,我将注释更改为:
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="Application\Sonata\UserBundle\Entity\User", cascade={"all"})
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
... 一切都很顺利。