私は次のモデルを持っています:
class Adjustment extends AppModel {
var $name = 'Adjustment';
var $belongsTo = array(
'Source_Budget'=>array('className'=>'Budget','foreignKey'=>'s_budget_id'),
'Target_Budget'=>array('className'=>'Budget','foreignKey'=>'t_budget_id'),
'Source_Project'=>array('className'=>'Project','foreignKey'=>'s_project_id'),
'Target_Project'=>array('className'=>'Project','foreignKey'=>'t_project_id')
);
モデル予算とプロジェクトは以下の通り
class Budget extends AppModel {
var $name='Budget';
var $belongsTo = array('Year');
var $hasMany=array('Project','Payment','Revenue',
'AdjustmentFrom'=>array('className'=>'Adjustment','foreignKey'=>'s_budget_id'),
'AdjustmentTo'=>array('className'=>'Adjustment','foreignKey'=>'t_budget_id'),
'TransferFrom'=>array('className'=>'Transfer','foreignKey'=>'s_budget_id'),
'TransferTo'=>array('className'=>'Transfer','foreignKey'=>'t_budget_id')
);
class Project extends AppModel {
var $name = 'Project';
var $belongsTo = array('Budget','Year');
var $hasMany=array('Payment','Revenue',
'AdjustmentFrom'=>array('className'=>'Adjustment','foreignKey'=>'s_project_id'),
'AdjustmentTo'=>array('className'=>'Adjustment','foreignKey'=>'t_project_id'),
'TransferFrom'=>array('className'=>'Transfer','foreignKey'=>'s_project_id'),
'TransferTo'=>array('className'=>'Transfer','foreignKey'=>'t_project_id')
);
調整を追加/削除/更新するスキャフォールディングを使用してコントローラーを正常に作成しましたが、コードをベイクすると、調整を追加しようとすると「エラー: 非オブジェクトでメンバー関数 find() を呼び出します」というメッセージが表示されます。
エラーは次の行にあります。
$sourceBudgets = $this->Adjustment->SourceBudget->find('list');
$targetBudgets = $this->Adjustment->TargetBudget->find('list');
$sourceProjects = $this->Adjustment->SourceProject->find('list');
$targetProjects = $this->Adjustment->TargetProject->find('list');
$this->set(compact('sBudgets', 'tBudgets', 'sProjects', 'tProjects'));
もちろん、SBudget、TBudget、SProject、TProject というモデルは存在しないため、以下のようにコードを編集しました。
$sourceBudgets = $this->Adjustment->Budget->find('list');
$targetBudgets = $this->Adjustment->Budget->find('list');
$sourceProjects = $this->Adjustment->Project->find('list');
$targetProjects = $this->Adjustment->Project->find('list');
$this->set(compact('sBudgets', 'tBudgets', 'sProjects', 'tProjects'));
そして、 public $uses = array('Budget', 'Project'); という行を追加しました。
調整コントローラー クラス。残念ながら、問題は解決せず、常に「エラー: 非オブジェクトでメンバー関数 find() を呼び出します」というメッセージが表示されます。