Я разработал приложение для планирования, в котором у меня есть одна таблица и класс 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.
Если External_user удлиняется модель из CI_Model, то вы можете добавить что-то подобное в прибудете метод '$ this-> db-> select (array ('col1', 'col2')); $ this-> db-> где (array ('type' => 'external', 'othercondn' => value)); return $ this-> db-> get (tablename) -> result(); ' – smitrp
В случае, если вы хотите реализовать это, используя одну расширенную модель из CI_Model, тогда вы можете использовать два метода в расширенной модели. 1) get_internal() - в этом вы меняете здесь параметры функции '$ this-> db-> где (array ('type' => 'external', 'othercondn' => value));' 2) get_external() - В этом вы меняете здесь параметры функции '$ this-> db-> где (array ('type' => 'internal', 'othercondn' => value));' – smitrp
Thanks для ваших комментариев. Я надеялся иметь 2 разных класса/модели для внешнего/внутреннего, где мне не нужно было учитывать параметр типа. Однако, учитывая вас, я мог бы расширить метод get() в моей модели следующим образом: function get() {$ this-> db-> где ('type' => 'internal'); Родитель :: получить(); } – jonixj