Cakephp从另一个控制器调用函数返回“警告(512):SQL错误:1064”

时间:2010-09-01 12:05:28

标签: cakephp function controller

我确信这个问题可以迅速解决,但我在网上找不到任何答案,所以我在这里。我想从另一个控制器调用一个函数,但是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查询。

干杯,
尼古拉斯。

3 个答案:

答案 0 :(得分:1)

嗯,模型之间的关系。所以你不能通过它们调用控制器的功能---动作。这意味着如果你想让你的代码正常工作,goal()应该是玩家模型中的一个函数,而不是控制器中的函数。

BTW,从另一个控制器调用一个函数是个坏主意。

更新

获得团队控制者中某些玩家的得分

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

/*in team controller*/
$score = $this->Team->Player->goal($player_id);

答案 1 :(得分:0)

在播放器模型(goals())上编写方法app/models/player.php。它是一个数据函数,而不是数据操作函数,因此更适合位于模型上。

答案 2 :(得分:0)

这里的解决方案都没有工作,看起来这个功能必须与另一个控制器上的功能略有不同,所以我决定在控制器中重写一个新功能。