2015-12-04 72 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