codeigniter中的has_one和has_many

时间:2015-12-04 20:44:42

标签: php codeigniter

如何在codeigniter 3.0中使用has_onehas_many

我想通过像Ruby on Rails这样的表创建关系。

Class User
{
     has_many: comments
}

Class Comments
{
     belongs_to: users
}

1 个答案:

答案 0 :(得分:1)

这是最常见的用法,几乎在每个项目中都使用。定义这种关系有一个简单的模式。

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关系。这些 可以有任何名称,只要它们是唯一的和镜像的 交。
  4.   

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