1
我试图过滤查询的结果。用户只能看到与他具有相同company_group_id的公司,所以我希望在我的模型的beforeFind函数中添加该条件。在findFind函数中添加cakePHP条件对paginate没有影响
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
上午我这样做是否正确?或者有另一种方式向用户显示正确的记录吗?
我已经有很多SEACH情况下,用户应用过滤器,但我动态添加到我的PAGINATE具有此想法模型中的company_group_id是因为我想在每个查询上都使用这个条件,而不是在每个控制器操作中手动添加它。有没有办法做到这一点? – 2012-08-07 13:17:47
@DominicHorbas你总是可以将这个条件('array('Company.company_group_id'=> $ id)''与你使用'array_merge()'从用户获得的动态搜索条件合并?“ – Nasreddine 2012-08-07 13:36:19
嗯,没有任何选择,谢谢! – 2012-08-07 13:45:50