我想从我的基地返回一些记录(例如,用户角色) 我通常使用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
很高兴为你工作。抱歉的不准确。我不在一个可以查看旧项目的框中。 –