2011-11-12 20 views
1

私はcakePHPにかなり新しく、頭がおかしくないような問題に遭遇しました。 2つのテーブルのいくつかの情報を検索しようとしますが私のCakePHPが関数を検索して結果を返さないのはなぜですか?

私はこれを取得:

ERROR: missing FROM-clause entry for table "Match"

私は2つのモデル、ClubMatchを持っています。
clubsテーブルには一致するものはありません。 マッチテーブルには、クラブ(id)に関連するhometeamidawayteamidがあります。

2つのクラブで試合が行われ、自宅でも離れてでもプレイできるので、通常とは少し違う方法で接続を行う必要があります。モデルの接続用として:

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'))); 


残念ながら、これは私が言及したエラーを与えますトップ。

私は問題が何であるかについてはあまりよく分かりません。テーブル "Match"の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から何かを取得しようとすると、ケーキは私に語った:

Undefined variable: homematches

今何?

+0

クエリのSQLログ出力も投稿できますか? –

+0

もちろん、SELECT "Match"、 "id" AS "Match__id"、 "Match"、 "status" AS "Match__status"、 "Match"、 "matchdate" AS "Match__matchdate"、 "Match""ホームマッチ"。 "ホームメイト"。 "ホームチーム"。 "ID")LEFT JOIN "clubs" AS "AwayTeam"( "HomeMatch"。 "ホームチーム" "ON"( "HomeMatch"。 "AwayTeam"。 "id")WHERE 1 = 1 " – user1043291

+0

これは明らかにSELECT" Match "の" Match "と関係があります。 – user1043291

答えて

0

このエラーは、クエリに問題があることを意味するものではありません。

あなたはこのラインことを確認する必要があります。

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

は、コントローラファイル内にあり、レンダリング機能がそれの後にあります。

"set"機能とビューファイルとの間に切断があります。 ファンクションコード全体を追加してください(上記の行がある場所)。

関連する問題