我开发了一个调度应用程序,其中我有一个表和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的记录。
答案 0 :(得分:1)
如果您想使用CI_Model中的单个扩展模型实现此功能,那么您可以在扩展模型中使用两个方法。
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();
get_external() - 在这个模型中(继承BaseModel)你改变了像这样的函数params
$this->db->select(array('col1', 'col2'));
$this->db->where(array('type' => 'internal', 'othercondn' => value));
return $this->db->get(tablename)->result();