2017-04-21 66 views
0

我沒有很多symfony或教條的經驗,但我處於一個奇怪的境地。symfony3實體生成器yml bug

我有一個簡單的用戶和郵政實體。問題是用戶可以在登錄時發佈內容。

的問題是,我想我的表「後」和「用戶」與post.user_idUSER.ID

鏈接,教義,我決定把在一個簡單的多對一關係帖子

(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後(內容, USER_ID,created_at發生異常的)VALUES(,)」使用參數[,空 「的 帖子的內容」, 「2017年4月21日11時27分04秒」]:???

正如你所看到的user_id是null(我試圖在控制器中手動設置,在實體結構中或者使用表單字段,結果相同)

還沒有結束。因爲如果我評論/刪除Post.orm.yml的一部分:

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

然後,我可以再次發佈...但我不明白爲什麼。 (並順便說一句我無法獲得用戶信息的帖子了,所以我仍然需要它)

有人可以給我一個解釋嗎?我一直在這個問題上2天。你是我最後的希望。

回答

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: { } 
+0

看起來它解決了問題!非常感謝 !我現在明白了。 – Kodoyosa