2015-06-21 53 views
1

根據的文檔網站上的this page,他們解釋瞭如何解決您的應用程序邏輯和最佳實踐。我在本文檔中缺少的一件事是存儲和使用實體的方式。有一個small section涵蓋了你的實體中的註釋的使用,但我們都使用現在,我希望你也可以。AppBundle的最佳實踐和如何進一步

到目前爲止,我的項目有以下實體:

+------------------------------------------------------------------------+ 
| Filename    | Location       | Type  | 
+------------------------------------------------------------------------+ 
| Account.php   | src/AppBundle/Entity    | Entity  | 
| AccountRepository.php | src/AppBundle/Entity/Repositories | Repository | 
| News.php    | src/AppBundle/Entity    | Entity  | 
| NewsRepository.php | src/AppBundle/Entity/Repositories | Repository | 
+------------------------------------------------------------------------+ 

現在我有麻煩創建Forum.php實體,我需要有4個數據庫表:

  • forum_sections
  • forum_categories
  • forum_topics
  • forum_posts

我是否需要在src/AppBundle/Entity的一個名爲Forum.php的文件中創建4個實體,還是需要採取其他措施來實現存儲和使用這些實體的最佳實踐方式?看來,例如ForumSections.php和其他三個文件佔用大量的空間,它只是醜陋的。

感謝您的閱讀,並提前感謝您抽出時間留下回復。如果在我的問題中有任何拼寫錯誤,我很抱歉。

回答

1

兆兆字節,則需要在以下文件中定義的四個實體:

src/AppBundle/Entity/ForumCategory.php 
src/AppBundle/Entity/ForumPost.php 
src/AppBundle/Entity/ForumSection.php 
src/AppBundle/Entity/ForumTopic.php 

然後,每個實體的名稱空間將爲namespace AppBundle\Entity;

但是,如果您有多個相關實體,最好在Entity/目錄中創建一個子目錄。因此,您可以執行以下操作:

src/AppBundle/Entity/Forum/Category.php 
src/AppBundle/Entity/Forum/Post.php 
src/AppBundle/Entity/Forum/Section.php 
src/AppBundle/Entity/Forum/Topic.php 

使用此佈局不需要更改代碼。你應該更新的唯一東西是這些實體的命名空間:namespace AppBundle\Entity\Forum;

+0

這是一個很好的解決方案。我如何在我的控制器中調用實體?與$ this-> getDoctrine() - > getRepository('AppBundle:Forum:Category')''一樣,我會像'$ this-> getDoctrine() - > getRepository('AppBundle:News') –

+1

你是對的。簡短的語法不能與我早先提出的第二種策略一起使用。你應該使用 - > getRepository('AppBundle \ Entity \ Forum \ Category')'。所以我認爲最好使用第一個策略。 –

+0

我親身體驗過。你需要整個命名空間來獲取控制器中的實體。最好的方法是堅持你的答案中提供的第一個解決方案。 –

1

是的,你需要爲每個實體創建一個新的文件。對於整個框架,您必須爲每個文件只寫入一個類,並且文件名必須與文件中的類名(擴展名除外)匹配。大量的空間意味着什麼?我們在2015年如果按照相同的策略,您現有的實體,其中的計算機可以處理:-)

+0

謝謝你的回答。 –