为什么我的CakePHP找不到函数返回任何结果?

时间:2011-11-12 16:21:03

标签: cakephp

我是蛋糕PHP的新手,遇到了一个我似乎无法理解的问题。

在尝试从两个表中找到一些信息时,我得到了这个:

  

错误:缺少表“匹配”的FROM子句条目

我有两个模型,ClubMatch 俱乐部表没有任何与比赛有关的内容。 匹配表有一个hometeamid和一个awayteamid,它与俱乐部(id)有关。

由于比赛是由两个俱乐部进行的,并且可以在主场或客场比赛中进行,我不得不做一些与正常情况不同的联系。至于模型上的连接:

Club $hasMany = array('HomeMatch' => array('className' => 'Match','foreignKey' => 'hometeamid'), 'AwayMatch' => array('className' => 'Match','foreignKey' => 'awayteamid'));

Match $belongsTo = array('HomeTeam' => array('className' => 'Club', 'foreignKey' => 'hometeamid'), 'AwayTeam' => array('className' => 'Club', 'foreignKey' => 'awayteamid'));

http://book.cakephp.org/view/1046/Multiple-relations-to-the-same-model

在尝试查找所有主场比赛时,我这样做:

$this->Club->HomeMatch->find('all',array('fields' => array('Match.id', 'Match.status', 'Match.matchdate', 'Match.stadium_id')));

不幸的是,这给出了我在顶部提到的错误。

我不太确定问题是什么。我可以看到它说它缺少表“匹配”的FROM子句但是,我无法理解这一点。

来自评论的更新信息:

这是调试SQL:

SELECT "Match"."id" AS "Match__id", "Match"."status" AS "Match__status", "Match"."matchdate" AS "Match__matchdate", "Match"."stadium_id" AS "Match__stadium_id" 
FROM "matches" AS "HomeMatch" 
  LEFT JOIN "clubs" AS "HomeTeam" ON ("HomeMatch"."hometeamid" = "HomeTeam"."id") 
  LEFT JOIN "clubs" AS "AwayTeam" ON ("HomeMatch"."awayteamid" = "AwayTeam"."id") 
WHERE 1 = 1

还有一点工作,我把它缩小到我的发现范围。我可以看到模型连接完美地工作,但我的发现并没有正常工作。

$this->set('homematches', $this->Club->HomeMatch->find('all', array( 'fields' => array('HomeMatch.id', 'HomeMatch.status', 'HomeMatch.matchdate', 'HomeMatch.stadium_id')))); 

此查找不会产生任何错误,但它也不会产生任何结果。当我尝试从视图中的homematches检索某些内容时,蛋糕会告诉我:

  

未定义的变量:homematches

现在怎么办?

1 个答案:

答案 0 :(得分:0)

您获得的错误并不意味着查询有问题。

你需要确保这一行:

$this->set('homematches', $this->Club->HomeMatch->find('all', array( 'fields' => array('HomeMatch.id', HomeMatch.status', 'HomeMatch.matchdate', 'HomeMatch.stadium_id')))); 

在控制器文件中,后面有一个渲染函数。

“set”功能与视图文件之间存在断开连接。 请添加整个功能代码(上面一行所在的位置)。