У меня есть следующие модели:CakePHP Ошибка: Вызов функции члена находке() на не-объект
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')
);
Я успешно создали контроллер с лесами, который добавляет/удаляет/обновляет настройки, но когда я испепелю код, я получаю сообщение «Ошибка: вызов функции-функции члена() для не-объекта», когда я пытаюсь добавить настройку.
Ошибка на следующей строке:
$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'));
Off ПРОДВИЖЕНИЯ нет модели 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() для не-объекта».
В какой-то строке вы получаете ошибку, потому что вы показываете 5 строк. Кроме того, вы определяете свою принадлежность к «Source_Budget», но ссылаетесь на нее как «SourceBudget».И наконец; это, по крайней мере, относится к * существующим * переменным; '$ this-> set (compact ('sourceBudgets', 'targetBudgets', 'sourceProjects', 'targetProjects')); – thaJeztah
спасибо за ваш комментарий. Я получаю сообщение об ошибке «$ sourceBudgets = $ this-> Adjustment-> SourceBudget-> find ('list'); SourceBudget был произведен с помощью bake, такой же, как $ this-> set (compact ('sourceBudgets', 'targetBudgets', 'sourceProjects', 'targetProjects')) – leonidou