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