私はcakePHPにかなり新しく、頭がおかしくないような問題に遭遇しました。 2つのテーブルのいくつかの情報を検索しようとしますが私のCakePHPが関数を検索して結果を返さないのはなぜですか?
私はこれを取得:
ERROR: missing FROM-clause entry for table "Match"
私は2つのモデル、Club
とMatch
を持っています。
clubsテーブルには一致するものはありません。 マッチテーブルには、クラブ(id)に関連するhometeamid
とawayteamid
があります。
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
今何?
クエリのSQLログ出力も投稿できますか? –
もちろん、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
これは明らかにSELECT" Match "の" Match "と関係があります。 – user1043291