베이스에서 일부 레코드를 반환하고 싶습니다. (예 : 사용자 역할) 일반적으로 find(), findAll() 등의 함수를 사용하며 항상 '조건'을 사용해야합니다. 이렇게 : 역할 admin (name! = admin)을 표시하지 않습니다. 내 질문에, 어떻게 할 수있는 모든 기능에 대한 RoleModel 세트 에서이 조건과 함께 돌아올 것입니다.CakePHP에 일부 레코드를 표시하지 마십시오
영어로 죄송합니다.
안녕!
베이스에서 일부 레코드를 반환하고 싶습니다. (예 : 사용자 역할) 일반적으로 find(), findAll() 등의 함수를 사용하며 항상 '조건'을 사용해야합니다. 이렇게 : 역할 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, 완벽하게 작동한다! 수정 : $ queryData를 반환하려면 true 반환 – kicaj
그것은 당신을 위해 기쁘다. 부정확 한 것에 대해 사과드립니다. 나는 오래된 프로젝트를 찾을 수있는 상자에 있지 않습니다. –