我有2个实体:面试和评论。面试与评论有一对多的单向关系。
这是我的评论的yaml映射文件:
Entities\Comment:
type: entity
table: Comment
repositoryClass: Repositories\CommentRepository
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
parentid:
type: integer
nullable: false
column: parentid
isactive:
type: integer
nullable: false
column: isactive
isremoved:
type: integer
nullable: false
column: isremoved
removaldate:
type: datetime
nullable: true
column: removaldate
user_name:
type: string
length: 255
nullable: false
column: user_name
user_email:
type: string
length: 255
nullable: false
column: user_email
user_avatar:
type: string
length: 255
nullable: false
column: user_avatar
comment:
type: text
nullable: false
column: comment
creationdate:
type: datetime
nullable: false
column: creationdate
rating:
type: integer
nullable: false
这是我面试的yaml映射文件:
Entities\Interview:
type: entity
table: Interview
repositoryClass: Repositories\InterviewRepository
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
isremoved:
type: integer
nullable: false
column: isremoved
removaldate:
type: datetime
nullable: true
column: removaldate
creationdate:
type: datetime
nullable: false
column: creationdate
rating:
type: integer
nullable: false
anonstitle:
type: string
length: 1000
nullable: false
column: anonstitle
anons:
type: text
nullable: false
column: anons
anonsphoto:
type: string
length: 255
nullable: true
column: anonsphoto
interviewtitle:
type: string
length: 1000
nullable: false
column: interviewtitle
interview:
type: text
nullable: true
column: interview
interviewphoto:
type: string
length: 255
nullable: true
column: interviewphoto
manyToMany:
comments:
targetEntity: Comment
joinTable:
name: interviews_comments
joinColumns:
interview_id:
referencedColumnName: id
inverseJoinColumns:
comment_id:
referencedColumnName: id
unique: true
所以在将模式加载到数据库之后,我有3个表。其中2个是实体表,一个是关系表,它只有2列:interview_id,comment_id。但是在为一些采访持久化评论对象后,我在连接表中看不到任何内容。无法找出原因。
答案 0 :(得分:0)
采访与评论有一对多的单向关系。
不,因为您在manyToMany
中将此关系定义为Entities\Interview
,而不是在拥有方的单向oneToMany
。
ManyToMany
映射重新连接表。因为一个Interview
可以有多个Comment
,一个Comment
可以有多个Interview
。使用数据库表中的其他属性无法解决此问题,因此会创建其他映射表。
<强>解决方案强>:
如果您希望一个Interview
包含多个Comment
,但一个Comment
只有一个Interview
,则必须更正yaml Entities\Interview
中的映射到{ {1}}没有oneToMany
(正如您定义的那样,并且已创建)。