2011-11-02 82 views
1

我有一個很多領域的實體(如facebook用戶信息與多個級別,如基本信息,聯繫信息,...)。我想用它完全像Facebook一樣。我的意思是我想要幾個標籤,把相關的領域在那裏。最簡單的方法是把它們全部存放在一張桌子裏,但它太討厭了。有沒有辦法做得更好?我知道關於數據庫分層設計的一些知識,但是有沒有辦法在symfony 1.4中做到這一點,並使用它的形式創建者呢?在學說和symfony 1.4中的層次信息

謝謝。

回答

1

首先:你在哪裏需要幫助嗎?在視圖中還是在模型中?

如果你想讓它看起來像Facebook一樣,我們正在討論View。這與Symfony無關,只是HTML(可能有一些CSS/JS)。

如果您正在討論如何存儲此信息:您描述的信息不是「分層」的。分層是關於樹木和類似的東西,大部分時間是幾乎無限深度的。 在這裏,您正在討論一個嚴格的結構(您作爲開發人員,確切知道您要呈現哪些字段,並自己定義這些字段)。您可以查看Entity-Attribute-Value商店。但要小心:在mySQL中實現這樣的一些操作時,執行「複雜」查詢並不容易。 (甚至像「:列出所有紐約人,30歲以上的人」這樣的查詢,並不容易)。

那麼,爲什麼你不會與一個列有很多列?沒有什麼討厭的!作爲一個人,你可能在phpMyAdmin中查看這些數據時遇到麻煩,與計算機如何管理這些信息無關;-)。您可以在單獨的'UserProfile'模型(具有一對一關係)中拆分'User'模型,以便您可以輕鬆地引用其他頁面(不需要所有配置文件數據)的其他頁面上的用戶。

+0

我沒有問題將它們全部存儲在一張表中。實際上它工作正常。我甚至將它分類爲多個選項卡中的臉書以及...。但我擔心未來會添加一些東西。但User和UserProfile的一對一關係看起來很完美。我會去的。非常感謝。 – Firouziam

+0

而隨着學說遷移,添加列是一件輕而易舉的;-) –

0

您可以使用Doctrine嵌套集。它基本上是數據庫中包含的樹形結構。我有一個演示如何使用它,但源代碼可能會嚇到你。

看看演示,讓你知道你可以做什麼。如果你傾向於這個選項,那麼你絕對應該看看我在下面發佈的教程鏈接以開始。

Demo

Source Code

Doctrine Nested Sets Documentation

Tutorial on Nested Sets

+0

感謝您的詳細信息。這樣我就可以使用symfony的形式呢?我的意思是如果我設置了這個嵌套模式,symfony是否會創建與相關字段不同的表單?因爲我想要那個。 – Firouziam

+0

順便說一下你的演示太棒了!我會盡快查看。它一定是如此有趣探索在那裏! – Firouziam

+1

我不認爲這個問題可以用嵌套集來解決。除非要將「地址」模型分配給另一個「地址」模型,而該模型又具有「地址」父級,而與另一個「地址」父級相對。嵌套集是用於創建樹木(無限深度)的bahaviour。 –