こんにちは、find() を実行し、結果の一部に新しいフィールドを追加しました。
$approved = $this->ExpenseClaim->find('all', array('conditions'=> array('ExpenseClaim.claim_status_id' => '3')));
$i = 0;
foreach ($approved as $ap) {
$approved[$i]['ExpenseClaim']['claimTotal'] = $this->ExpenseClaim->expenseClaimTotal($approved[$i]['ExpenseClaim']['id']);
$i++;
}
これをページネーションに渡す必要がありますが、これを行うことはできず、この特定の検索でのみ afterFind() メソッドを使用する別のモデルを作成する必要があることをここで読みました。
だから私は呼ばれる新しいモデルを作成しExpenseClaimTotal
、UseTableをに設定しました
public $useTable = 'expense_claims';
次に、新しいモデルの afterFind() メソッドで簡単なデバッグを行いました。
public function afterFind($results, $primary = false) {
debug($results);
//return $results;
}
しかし、pagesController でこの新しいモデルに対して検索を実行しようとすると、失敗します。
$this->loadModel('ExpenseClaimTotal');
$approved = $this->ExpenseClaimTotal->find('all', array('conditions'=> array('ExpenseClaim.claim_status_id' => '3')));
これは私が得るエラーです:
Database Error
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'ExpenseClaim.claim_status_id' in 'where clause'
SQL Query: SELECT `ExpenseClaimTotal`.`id`, `ExpenseClaimTotal`.`user_id`, `ExpenseClaimTotal`.`claim_status_id`, `ExpenseClaimTotal`.`created`, `ExpenseClaimTotal`.`modified`, `ExpenseClaimTotal`.`approved`, `ExpenseClaimTotal`.`approved_by`, `ExpenseClaimTotal`.`declined_by`, `ExpenseClaimTotal`.`date_submitted` FROM `expenses`.`expense_claims` AS `ExpenseClaimTotal` WHERE `ExpenseClaim`.`claim_status_id` = 3
1つのテーブルに2つのモデルを使用することについて、ドキュメントにはあまりないようです