每个表超过1个对象类型

时间:2013-03-13 13:23:04

标签: codeigniter codeigniter-datamapper

我开发了一个调度应用程序,其中我有一个表和dm类,称为“用户”,到目前为止我已经存储了系统中所有用户的所有信息。所有用户都是内部用户。

现在我需要为外部用户(客户)实现登录功能。

我的问题: 我现在想使用我的表用户,只需添加一个枚举字段'user_type'(内部/外部)。

然后我想创建一个名为internal_user的datamapper对象和另一个名为exernal_user的对象。

我跑的时候

$external_user = new External_user();
$external_user->get();

我只想获取用户表中user_type = external的行。是否可以使用datamapper以一种很好的方式实现?

更新:

我通过覆盖Datamapper类中的get方法解决了这个问题,如下所示:

class Internal_user(){
    [...]
    function get()
    {
        $this->where('type', 'internal');
        return parent::get();
    }
}

现在这一行:

$internal_user->get();

仅返回user_type字段中值为internal的记录。

1 个答案:

答案 0 :(得分:1)

如果您想使用CI_Model中的单个扩展模型实现此功能,那么您可以在扩展模型中使用两个方法。

  1. get() - 在Base模型(继承CI_Model)中,你改变了像这样的函数params

    $this->db->select(array('col1', 'col2'));
    
    $this->db->where(array('type' => 'internal', 'othercondn' => value));    
    
    return $this->db->get(tablename)->result();
    
  2. get_external() - 在这个模型中(继承BaseModel)你改变了像这样的函数params

    $this->db->select(array('col1', 'col2'));
    
    $this->db->where(array('type' => 'internal', 'othercondn' => value));
    
    return $this->db->get(tablename)->result();