我没有很多关于symfony或教义的经验,但我处于一种奇怪的境地。
我有一个简单的User and Post实体。问题是用户可以在记录时发布内容。
问题是我想链接我的桌子" post"和"用户"使用 post.user_id 和 user.id
因此,在学说中,我决定在发布中建立一个简单的manyToOne关系:
(Post.orm.yml)
Whatever\PostBundle\Entity\Post:
type: entity
table: post
repositoryClass: Whatever\PostBundle\Repository\PostRepository
id:
id:
type: integer
id: true
generator:
strategy: AUTO
fields:
content:
type: text
userId:
type: integer
column: user_id
createdAt:
type: datetime
column: created_at
manyToOne:
user:
targetEntity: Whatever\UserBundle\Entity\User
lifecycleCallbacks: { }
生成的实体和教义:架构:已完成更新
现在我可以根据需要获取帖子的用户信息但是因为user_id为空而无法发布任何内容
执行' INSERT INTO post(内容, user_id,created_at)VALUES(?,?,?)'与params ["内容 post",null," 2017-04-21 11:27:04"]:
正如您所看到的,user_id为null(我试图在控制器中,在实体构造中或在表单字段中手动设置它,结果相同)
还没结束。因为如果我评论/删除Post.orm.yml的部分:
manyToOne:
user:
targetEntity: Whatever\UserBundle\Entity\User
然后我可以再发帖......但我不明白为什么。 (顺便说一句,我不能再通过帖子获取用户信息。所以我仍然需要它)
有人能给我一个解释吗?我已经解决了这个问题2天了。你是我最后的希望。
答案 0 :(得分:1)
在字段定义中,删除userId
。 Symfony将通过您的ManyToOne定义来处理这个问题。请参阅docs以供参考。
Whatever\PostBundle\Entity\Post:
type: entity
table: post
repositoryClass: Whatever\PostBundle\Repository\PostRepository
id:
id:
type: integer
id: true
generator:
strategy: AUTO
fields:
content:
type: text
// Remove the next few lines
// userId:
// type: integer
// column: user_id
createdAt:
type: datetime
column: created_at
manyToOne:
user:
targetEntity: Whatever\UserBundle\Entity\User
lifecycleCallbacks: { }