symfony3 实体生成器 yml 错误
symfony3 entity generator yml bug
我对 symfony 或 doctrine 没有太多经验,但我的处境很奇怪。
我得到了一个简单的用户和 Post 实体。问题是用户在登录时可以 post 事情。
问题是我想 link 我的 table "post" 和 "user" 与 post.user_id和 user.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: { }
我对 symfony 或 doctrine 没有太多经验,但我的处境很奇怪。
我得到了一个简单的用户和 Post 实体。问题是用户在登录时可以 post 事情。
问题是我想 link 我的 table "post" 和 "user" 与 post.user_id和 user.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: { }