2013-06-13 115 views
0

我在Kohana 3.3中有一個簡單的粗糙應用,有幾種不同類型的數據或模型。比方說,這些模型是:Kohana 3.3表格結構

  • 用戶
  • 位置
  • 技能

我有一個表爲每個型號的,但表不涉及彼此以任何方式。我一直在試圖定義與ORM的關係,但我仍然感到困惑。舉個例子:

我有一些位置。每個位置都有很多用戶。

我知道我可以定義有:

class Model_Location extends ORM { 

    /** 
    * A location has many users 
    * 
    * @var array Relationships 
    */ 
    protected $_has_many = array(
     'users' => array('model' => 'user'), 
    ); 

} 

據我瞭解,我可以通過從用戶表中的行引用父位置的ID連接兩個。但是,如果每個用戶都可以屬於多個位置呢?我應該將序列化數據存儲在外鍵中嗎?我應該創建一個「查找表」嗎?如果是這樣,它應該看起來如何?

我該如何查詢數據庫中的某個位置以及所有附加的用戶? ORM甚至是正確的技術用於這種事情嗎?

回答

2

您正在尋找through參數,看看docs

你需要存儲兩個模型

users_locations,字段的ID的額外的表:user_idlocation_id(包括索引,當然)

而在你的模型:

protected $_has_many = array(
    'users' => array(
     'model' => 'user' 
     'through' => 'users_locations', 
    ), 
); 

反之亦然用戶型號:

protected $_has_many = array(
    'locations' => array(
     'model' => 'location' 
     'through' => 'users_locations', 
    ), 
); 
+0

啊對,謝謝。 –