我正在尝试过滤查询结果。用户只能看到与他具有相同company_group_id的公司,所以我想在我的模型的beforeFind函数中添加该条件。
function beforeFind($queryData) {
App::uses('CakeSession', 'Model/Datasource');
$user = CakeSession::read('Auth.User');
$queryData['conditions']['Company.company_group_id'] = $user['company_group_id'];
parent::beforeFind($queryData);
}
当我pr()我的$ queryData
时,我可以看到这种情况Array
(
[conditions] => Array
(
[Company.company_group_id] => 2
)
)
不幸的是,当我调用我的paginate时生成的查询忽略了这个条件
SELECT `Company`.`id`, ... WHERE 1 = 1 GROUP BY `Company`.`id` ORDER BY `Company`.`name` asc LIMIT 10
我这样做是否正确?或者是否有另一种向用户显示正确记录的方法?
答案 0 :(得分:0)
您必须在控制器的操作中配置分页行为(有关此here的更多信息):
//obtaining the company_group_id
$user = CakeSession::read('Auth.User');
$id = $user['company_group_id'];
//setting the pagination conditions (similar to a find())
$this->paginate = array(
'conditions' => array('Company.company_group_id' => $id),
);
$data = $this->paginate('Company');
$this->set('data', $data);