symfony3实体生成器yml bug

时间:2017-04-21 09:55:37

标签: symfony doctrine-orm doctrine symfony-3.2

我没有很多关于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天了。你是我最后的希望。

1 个答案:

答案 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: {  }