2013-03-13 2 views
-1

Я разработал приложение для планирования, в котором у меня есть одна таблица и класс dm, называемый «пользователями», где я до сих пор хранил всю информацию обо всех пользователях в системе. Все пользователи являются внутренними пользователями.Больше чем 1 тип объекта в таблице

Теперь мне необходимо реализовать функции входа для внешних пользователей (клиентов).

Мой вопрос: Теперь я хотел бы использовать пользователей моего стола и просто добавить поле перечисления 'user_type' (внутренний/внешний).

Я хотел бы создать объект datamapper, называемый internal_user, и другой, называемый exernal_user.

когда я бегу

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

Я только хочу, чтобы получить строки в моей пользовательской таблице, где user_type = внешний. Можно ли добиться хорошего использования с помощью datamapper?

UPDATE:

Я решил проблему путем переопределения метода GET в классе DataMapper, как это:

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

Теперь эта линия:

$internal_user->get(); 

возвращает только записи с значение внутри поля user_type.

+0

Если External_user удлиняется модель из CI_Model, то вы можете добавить что-то подобное в прибудете метод '$ this-> db-> select (array ('col1', 'col2')); $ this-> db-> где (array ('type' => 'external', 'othercondn' => value)); return $ this-> db-> get (tablename) -> result(); ' – smitrp

+0

В случае, если вы хотите реализовать это, используя одну расширенную модель из CI_Model, тогда вы можете использовать два метода в расширенной модели. 1) get_internal() - в этом вы меняете здесь параметры функции '$ this-> db-> где (array ('type' => 'external', 'othercondn' => value));' 2) get_external() - В этом вы меняете здесь параметры функции '$ this-> db-> где (array ('type' => 'internal', 'othercondn' => value));' – smitrp

+0

Thanks для ваших комментариев. Я надеялся иметь 2 разных класса/модели для внешнего/внутреннего, где мне не нужно было учитывать параметр типа. Однако, учитывая вас, я мог бы расширить метод get() в моей модели следующим образом: function get() {$ this-> db-> где ('type' => 'internal'); Родитель :: получить(); } – jonixj

ответ

1

В случае, если вы хотите реализовать это, используя одну расширенную модель из CI_Model, тогда вы можете использовать два метода в расширенной модели.

  1. прибудет() - В базовой модели (которая наследует 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) вы изменяете, где функция Титулы нравится эта

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