symfony3 实体生成器 yml 错误

symfony3 entity generator yml bug

我对 symfony 或 doctrine 没有太多经验,但我的处境很奇怪。

我得到了一个简单的用户和 Post 实体。问题是用户在登录时可以 post 事情。

问题是我想 link 我的 table "post" 和 "user" 与 post.user_iduser.id

所以根据学说,我决定在 Post 中建立一个简单的多对一关系:

(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: {  }

生成实体并doctrine:schema:update完成

现在我可以使用 post 获取用户信息,但由于 user_id null

也无法再 post 获取任何信息

An exception occurred while executing 'INSERT INTO post (content, user_id, created_at) VALUES (?, ?, ?)' with params ["content of the post", null, "2017-04-21 11:27:04"]:

如您所见,user_id 为空(我尝试在控制器、实体构造或表单字段中手动设置它,结果相同)

还没有结束。因为如果我 comment/remove Post.orm.yml 的一部分:

manyToOne:
        user:
            targetEntity: Whatever\UserBundle\Entity\User

然后我又可以post了...但是我不明白为什么。 (顺便说一句,我无法再使用 post 获取用户信息。所以我仍然需要它)

有人可以给我解释一下吗?我已经在这个问题上解决了 2 天。你是我最后的希望。

在您的字段定义中,删除 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: {  }