我确信这个问题可以迅速解决,但我在网上找不到任何答案,所以我在这里。我想从另一个控制器调用一个函数,但是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查询。
干杯,
尼古拉斯。
答案 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)
这里的解决方案都没有工作,看起来这个功能必须与另一个控制器上的功能略有不同,所以我决定在控制器中重写一个新功能。