我想从我的基础中返回一些记录(例如用户角色)而且我通常使用函数 find()、findAll() 等,而且我总是必须这样写“条件”:不显示角色管理员(名字! =管理员)。我的问题是,我如何在 RoleModel 中为所有函数设置将在此条件下返回。
对不起英语!
再见!
我想从我的基础中返回一些记录(例如用户角色)而且我通常使用函数 find()、findAll() 等,而且我总是必须这样写“条件”:不显示角色管理员(名字! =管理员)。我的问题是,我如何在 RoleModel 中为所有函数设置将在此条件下返回。
对不起英语!
再见!
我认为更好的解决方案是在你的 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)));
对这种事情使用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;
}
这有点离题,所以语法可能不准确,但它应该给你一些开始。我认为一切都井井有条,也许除了几个函数调用中的参数顺序。无论如何,它应该是接近的。