-1
我開發了一個調度應用程序,其中我有一個表和dm類稱爲「用戶」,我迄今爲止已存儲了有關係統中所有用戶的所有信息。所有用戶都是內部用戶。每表超過1個對象類型
現在我需要爲外部用戶(客戶)實現登錄功能。
我的問題: 我現在想用我的表用戶,只是添加一個枚舉字段'user_type'(internal/external)。
我想創建一個名爲internal_user的數據映射器對象,另一個名爲exernal_user。
當我運行
$external_user = new External_user();
$external_user->get();
我只是想在我的用戶表中的行,其中USER_TYPE =外部。使用datamapper可以達到很好的效果嗎?
UPDATE:
我通過在DataMapper的類像這樣重寫get方法解決了這個問題:
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')); (數組('type'=>'external','othercondn'=> value)); return $ this-> db-> get(tablename) - > result();' – smitrp 2013-03-13 14:42:30
如果想要使用CI_Model中的單個擴展模型實現此功能,則可以在擴展模型中使用兩種方法。 1)get_internal() - 在此更改函數參數的位置,如下所示: '$ this-> db-> where(array('type'=>'external','othercondn'=> value));' 2)get_external() - 在這裏你改變這個函數參數像這樣 '$ this-> db-> where(array('type'=>'internal','othercondn'=> value));' – smitrp 2013-03-13 14:46:00
Thanks爲您的評論。我希望有2個不同的類/模型用於外部/內部,我不需要考慮類型參數。然而,鑑於你idéa我可能能夠擴展get() - 在我的模型中的方法是這樣的:function get(){$ this-> db-> where('type'=>'internal');父::得到(); } – jonixj 2013-03-13 15:24:33