2017-10-19 119 views
2

我有一個:Symfony的CollectionType沒有實體

class Q&A 
{ 
    private $question 
    private $answer 
} 

我需要的Q&A個集合(CollectionType),但沒有反側實體在我的模型(Q&A實體有沒有多對一關係任何其他實體)。

問題

什麼是我選擇這裏?

我也有:

class Page 
{ 
    @ORM\OneToMany(targetEntity="Content") 
    private $contents; 
} 

我想過使得Page類作爲abstract並創建一個獨立的實體爲每個頁面類型,分別來自Page繼承。

這樣我可以

class Q&APage 
{ 
    @ORM\OneToMany(targetEntity="Q&A") 
    private $q&as; 
} 

但它不是一個大的網站,我有喜歡它5個不同的頁面類型,我覺得這將是矯枉過正爲每個頁面類型不同的實體。

+0

創建一個模型類(例如'的appbundle \模型\ QACollection'),可容納'的appbundle \實體\ QA'的陣列和形式與該關聯。 – ccKep

+0

謝謝,我真的想過那個。現在工作正常! – yurden

回答

0

首先這與Symfony無關。這是一個學說的東西。順便說一句,你沒有矯枉過正,因爲你的模型應該是合理的,讓你開發你的代碼庫。

有存在,因此很多情況下,程序員,設計了一個畸形的模式,並陷入困境,同時通過開發代碼庫去。

這一切後,你怎麼知道:

這不是一個大的網站

?今天的許多大網站從一開始就沒有那麼大。所以這將是一個很好的做法對你作爲一個開發人員去嘗試,不說笑了模型設計

所提出的設計看起來不錯,說實話,你需要爲您的模型數據結構有很好的理解。

你需要有一個:

class QuestionAndAnswer 
{ 
    /** 
    * @ORM\ManyToOne(targetEntity="QuestionAndAnswerPage", inversedBy="questionAndAnswers") 
    */ 
    private $questionAndAnswerPage; 
} 

和:

class QuestionAndAnswerPage 
{ 
    /** 
    * @ORM\OneToMany(targetEntity="QuestionAndAnswer", mappedBy="questionAndAnswerPage") 
    */ 
    private $questionAndAnswers; 
} 

提示:嘗試使用完整的英語單詞和短語的所有的時間,因爲這是在面向對象的最佳實踐世界。請記住,您的用戶不需要閱讀它們。他們在那裏讓你不會被卡在未來的格格不入的短語中。

+0

非常感謝編輯我原來的帖子和這個答案! – yurden

+0

對不起,我發送了以前的評論沒有完成它,現在不能編輯。 我的意思是「它不是一個大網站」,它不會變得很大,它真的是一個非常小的本地工作室展示網站,現在已經有10年的規模了,我只是在提醒它。很高興知道我的想法很好。 在你回答之前,我已經使用了ccKep的建議,它效果很好,你還覺得我需要切換到這個模型設計嗎? 同樣感謝您使用完整單詞的提示! – yurden

+0

一個好的模型設計的度量標準在互聯網上已經存在,但是整個模型的內容來自問題領域,您將要解決。實體和它們的名稱應該真的存在那裏。例如,如果我是你,我不會選擇一個名爲'Content'的實體,因爲這沒有多大意義。幾乎所有內容。您應該對模型設計過程中的實體更具體。 – Trix

相關問題