2015-12-04 105 views
0

如何在codeigniter 3.0中使用has_onehas_manyhas_one和has_many in codeigniter

我想通過像Ruby on Rails這樣的表創建關係。

Class User 
{ 
    has_many: comments 
} 

Class Comments 
{ 
    belongs_to: users 
} 
+0

第二個選項是使用[MY_Model(https://github.com/avenirer/CodeIgniter-MY_Model)牢固地領會提到的關係。 – Tpojka

回答

0

這是最常見的用法,並且幾乎在每一個項目中使用。定義這種關係有一個簡單的模式。

Post有一個創建者和編輯,可能是不同的用戶。以下是如何設置。

class Post extends DataMapper { 
    $has_one = array(
     'creator' => array(
      'class' => 'user', 
      'other_field' => 'created_post' 
     ), 
     'editor' => array(
      'class' => 'user', 
      'other_field' => 'edited_post' 
     ) 
    ); 
} 

用戶

class User extends DataMapper { 
    $has_many = array(
     'created_post' => array(
      'class' => 'post', 
      'other_field' => 'creator' 
     ), 
     'edited_post' => array(
      'class' => 'post', 
      'other_field' => 'editor' 
     ) 
    ); 
} 

一對夫婦的事情,這裏要注意。

  1. 的關係現在由在任一側 的關係鍵,而不是模型名定義。這現在已成爲尋求 建立關係的唯一途徑。
  2. 關係一側的鑰匙成爲 另一側的other_field,反之亦然。
  3. 因爲我們需要一種方法來指定 已編輯的帖子與已創建的帖子之間的差異,我們必須聲明 略有不同尋常的edited_post和created_post關係。這些 可以有任何名稱,只要它們是唯一的,並在 後鏡像。
不是提供答案等

http://datamapper.wanwizard.eu/pages/advancedrelations.html