-1

我开发了一个调度应用程序,其中有一个名为“users”的表和 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 的记录。

4

1 回答 1

1

如果您想使用 CI_Model 中的单个扩展模型来实现这一点,那么您可以在扩展模型中使用两种方法。

  1. get() - 在基本模型(继承 CI_Model)中,您可以像这样更改函数参数的位置

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

    $this->db->select(array('col1', 'col2'));
    
    $this->db->where(array('type' => 'internal', 'othercondn' => value));
    
    return $this->db->get(tablename)->result();
    
于 2013-03-13T15:36:01.193 回答