Cakephp вызов функции из другого контроллера возвращает «Предупреждение (512): ошибка SQL: 1064» - PullRequest
0 голосов
/ 01 сентября 2010

Я уверен, что эта проблема может быть решена быстро, но я не могу найти никакого ответа в Интернете, поэтому я здесь.Я хочу вызвать функцию из другого контроллера, но CakePHP распознает ее не как функцию, а как запрос, возвращая предупреждение:

Warning (512): SQL Error: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'goals' at line 1 [CORE/cake/libs/model/datasources/dbo_source.php, line 673]

Вот логика того, что я пытаюсь сделать:

//from the TeamController
$this->Team->Player->goals()

//in the PlayerController
function goals() {
    //code
}

Как можно догадаться по именам, команда имеет много игроков и игрок принадлежит команде .Я думал, что это был способ справиться с этим, но он явно не работает, потому что торт хочет запустить SQL-запрос, начинающийся с «цели».

Cheers,Николя.

Ответы [ 3 ]

1 голос
/ 01 сентября 2010

Ну, отношения между моделями. Так что вы не можете вызвать функцию контроллера --- действие через них.Это означает, что если вы хотите, чтобы ваш код работал нормально, goal() должна быть функцией в модели плеера, а не в контроллере.

Кстати, вызов функции из другого контроллера, по сути, плохая идея.

Обновление:

, чтобы получить счет некоторого игрока в контроллере команды

/*in player's model*/
function goal($player_id)
{
    return $the_score_of_player_id;
}

/*in team controller*/
$score = $this->Team->Player->goal($player_id);
0 голосов
/ 07 сентября 2010

Ни одно из решений здесь не сработало, и казалось, что функция должна немного отличаться от той, что на другом контроллере, поэтому я решил переписать новое в контроллере.

0 голосов
/ 01 сентября 2010

Напишите метод goals() на модели проигрывателя (app/models/player.php). Это функция данных, в отличие от функции манипулирования данными, и поэтому она более правильно расположена в модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...