我是蛋糕PHP的新手,遇到了一个我似乎无法理解的问题。
在尝试从两个表中找到一些信息时,我得到了这个:
错误:缺少表“匹配”的FROM子句条目
我有两个模型,Club
和Match
俱乐部表没有任何与比赛有关的内容。
匹配表有一个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
现在怎么办?
答案 0 :(得分:0)
您获得的错误并不意味着查询有问题。
你需要确保这一行:
$this->set('homematches', $this->Club->HomeMatch->find('all', array( 'fields' => array('HomeMatch.id', HomeMatch.status', 'HomeMatch.matchdate', 'HomeMatch.stadium_id'))));
在控制器文件中,后面有一个渲染函数。
“set”功能与视图文件之间存在断开连接。 请添加整个功能代码(上面一行所在的位置)。