2010-08-13 79 views
0

我很困惑如何使用Cake的約定進行設置。我有一個用戶表(很漂亮的標準:id(pk,自動增量),用戶名,密碼),一個表格(也是非常標準的:id,name,user_id)和一個練習表(像醫生的做法,不是像「練習完美」)。練習表將由一個用戶(屬於一個dr組)擁有,並且將有零個或更多屬於該練習的其他用戶(並且是標準成員)。幫助(CakePHP)數據庫設計

這裏有什麼,我想一個非常粗拉:

user ---(belongs to)---> group 
    | 
    | 
    +<----(belongs to)---- practice 
    |      ^
    |      | 
    +-------------------(belongs to) 

我知道如何確保只有組「看守」的成員可以自己練習,我知道如何確保每個用戶都有一個組和所有這些。

通常我會明白如何讓「練習有很多用戶」和「練習屬於用戶」。然而,在我陷入困境的時候,我如何指定一個練習「有一個」用戶,而且「有很多」用戶。這是因爲練習不知道用戶屬於Cake的組。 (據我所知),我不能只說「practice.owner_id是一個與user.id匹配的外鍵」,因爲Cake不會理解這一點。

如果我錯了,你能否提供一個解釋/鏈接到一個文檔,以幫助我的方式嗎?感謝所以。

回答

1

我不能說「practice.owner_id是與user.id匹配的外鍵」,因爲Cake不會理解這一點。

那麼,你可以......只是不是你想的方式。

您在您的Practice模型上設置了belongsTo ...練習中的您的user_id字段將成爲所有者。然後,在您的用戶模型上使用practice_id字段設置另一個belongsTo。如果你願意,你甚至可以在練習中設置一個hasMany來將其綁定到用戶。只需以不同的方式命名belongsTo和hasMany關聯。在您的模型中調用實踐belongsTo用戶關係所有者。然後,當你真的從數據庫中拉出記錄時,你會在練習中得到一個Owner數組和一個用戶數組(假設適當的$遞歸級別)。

讀了一下,可能會讓人困惑......總結:

協會用戶:

  • 屬於關聯實踐

協會在實踐:

  • 的hasMany用戶
  • 屬於關聯所有者(用戶別名 )
+0

謝謝,這聽起來像正是我需要的。只需一次後續操作,當你說owner是用戶的別名時,你的意思是我應該創建一個不同的數據庫表,或者別名是Cake alias? – Tim 2010-08-13 17:20:57

+0

對不起,是的,這是不明確的... 基本上,它只是將在您的實踐模型中的協會的名稱。然後,在關聯本身中,您將所有者的className設置爲User。 下面是一個手冊頁:http://book.cakephp。org/view/1046/Multiple-to-the-same-model – Finster 2010-08-13 17:40:21

+0

oooooh,我錯過了那個文檔。謝謝!我想我現在明白了。 – Tim 2010-08-13 18:32:32