交响乐 3 |覆盖实体 table 名称

Symfony 3 | Override entity table name

我在我的项目中使用 FOSMessage (https://github.com/FriendsOfSymfony/FOSMessage),我想覆盖实体的 table 名称。

例如在 FOSMessage (\FOS\Message\Driver\Doctrine\ORM\Entity\Conversation) 中我有:

/**
 * @ORM\Table(name="fos_message_conversations")
 * @ORM\Entity
 */
class Conversation extends BaseConversation
...
// properties
...

在我的自定义实体中,我这样做:

/**
 * @ORM\Table(name="user__message__fos_message_conversations")
 * @ORM\Entity
 */
class Conversation extends \FOS\Message\Driver\Doctrine\ORM\Entity\Conversation
{

}

它有效,但仅适用于 "none-relation" 属性。存在具有 "One-To-Many" 关系的属性,并且被忽略。 当我更新我的数据库时,我只有文本属性和 ID。例如,我没有 "messages" 关系。

我该怎么办?我只想更改 table 名称。

oneToMany 需要 many 端的关联映射,因此您还需要自定义 Message 实体,映射 manyToOne 指向您的自定义 Conversation

那是因为实际上在RMDBS中,外键在many侧table,在本例中是messagetable。消息中有一列 conversation_id,反之亦然。