2012-10-18 59 views
0

查看由ACL組件生成的表(aros,acos)和例如CakeDC的收藏夾插件,我看到favorites表的字段爲Favorite.user_id,Favorite.modelFavorite.foreign_key
最後兩個合併替換好舊的Favorite.post_id(假設model的值爲'Post')。它的一個方面是HABTM數據透視表,一邊是動態模型名稱。
我可以在這裏看到一般和有用的想法,但想知道更多關於它的應用。變量模型名稱在CakePHP表格中如何工作?

我的問題(S):

  • 請問這種模式有名字嗎?
  • 這是如何工作的代碼方式?我可以看到抽象原理,但是需要什麼樣的模型代碼才能實現這個工作?它是否涉及拼湊的查詢,或者這是否允許順利的單一查詢實現?例如:我想一次性獲取系統中所有標記爲最喜歡的帖子及其相關用戶。
  • 而且這兩種方式都可以嗎? (從Post模型以及用戶模型中查詢)

我想朝着抽象的方向努力,在那裏我將行爲置於適當的位置來處理此模式。 我確實查看了CakeDC代碼,但無法弄清楚原理。對於我目前的知識來說,這有點太神祕。因此我的問題在這裏。

親切的問候,
巴特

回答

0

這種模式是否有名字嗎?

http://en.wikipedia.org/wiki/Junction_table aka加入表。

這是如何工作的代碼方式?我可以看到抽象的原理,但是需要什麼樣的模型代碼來完成這個工作?它是否涉及 拼湊的查詢,還是這可以實現順利的單一查詢 實現?例如:我想一次性獲取系統中所有標記爲最愛的帖子 及其相關用戶。

這只是一個普通的連接表,就這些。您可以簡單地依賴CakePHP在使用HABTM關聯時創建的內容,或使用連接優化查詢。見http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#joining-tables

模型字段在該「模式」中不需要,但允許您只有一個連接表,可用於許多不同的表/模型。例如,我們只需使用相同的表格並通過模型字段進行過濾,而不是通過tags_posts和tags_users關聯標籤,用戶和帖子。

並且這樣做是否有效? (查詢來自郵政模型 以及用戶模型)

是,如果你在這兩種模式設置HABTM關聯起來。

感謝您使用我們的插件。 ;)

相關問題