交响乐 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,在本例中是message
table。消息中有一列 conversation_id
,反之亦然。
我在我的项目中使用 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,在本例中是message
table。消息中有一列 conversation_id
,反之亦然。