我想從我的基地返回一些記錄(例如,用戶角色) 我通常使用find(),findAll()等函數,而且我總是必須寫'conditions'像這樣:不顯示角色admin(name!= admin)。 我的問題是,我怎麼能在RoleModel中設置所有函數都會返回這個條件。不要在CakePHP中顯示一些記錄
對不起,對不起英文!
再見!
我想從我的基地返回一些記錄(例如,用戶角色) 我通常使用find(),findAll()等函數,而且我總是必須寫'conditions'像這樣:不顯示角色admin(name!= admin)。 我的問題是,我怎麼能在RoleModel中設置所有函數都會返回這個條件。不要在CakePHP中顯示一些記錄
對不起,對不起英文!
再見!
使用beforeFind()
(http://book.cakephp.org/view/680/beforeFind)回調這種事情。這裏有一個我從一次使用的時間,以確保僅返回活動記錄:
function beforeFind($queryData)
{
$conditions = $queryData['conditions'];
if(!is_array($conditions)) {
if(!$conditions) {
$conditions = array();
}
else {
$conditions = array($conditions);
}
}
if(!array_key_exists($conditions, 'active') && !isset($conditions[$this->alias . '.active'])) {
$conditions[$this->alias . '.active'] = 1;
}
return true;
}
這是一個有點即興,所以語法可能不準確,但它應該給你的東西開始。我認爲一切都是按順序進行的,也許除了幾個函數調用中的參數順序外。無論如何,它應該接近。
我認爲一個更好的解決方案是設置hasMany關係中的條件。
// User.php Model:
var $hasMany = array('Role' => array('conditions' => array('name <>' => admin)));
,反之亦然,你可以爲你的榜樣做到這一點:
// Role.php Model:
var $belongsTo = array('User' => array('conditions' => array('User.name <>' => admin)));
array_key_exists($條件下, '主動')仍然array_key_exists( '主動',$條件)應該,但沒有按沒有工作。我設置了條件,但沒有不同的 – kicaj
okey,完美的作品! 修復:返回true返回$ queryData – kicaj
很高興爲你工作。抱歉的不準確。我不在一個可以查看舊項目的框中。 –