0

クエリを実行しようとしていますが、エラーが発生します:

不明なテーブル エイリアス

テーブルは次のようにセットアップされます。

Template_Spot hasOne  Template
Template      hasMany Template_Spot
Template      hasMany Location
Location      hasOne  Template

次の DQL を実行しようとしています。

$locationid = 1;
$spots = Doctrine_Query::create()
    ->select('cts.*, ct.*, uc.*')
    ->from('Template_Spot cts')
    ->innerJoin('Template ct')
    ->innerJoin('Location uc')
    ->where('uc.locationid = ?', $locationid)->execute();

誰かが問題を見つけますか?

4

2 に答える 2

1

どのテーブルエイリアスが認識されていないかを調べてみてください。Template_SpotをLocationと結合しようとしていると思います。その場合、次のことを行う必要があります。

[pseudo code]
FROM Template_Spot cts, cts.Template ct, ct.Location uc

スキーマでAliasとforeignAliasの名前を定義するだけでも役立つ場合があり、Doctrineは簡単に混乱します。このような複数の結合では、Doctrineが必要以上のSQLクエリを生成する場合があり、DQLを完全にバイパスしたい場合があります。

于 2010-04-16T13:41:04.703 に答える
0

すべてのフィールドを選択する場合->select()は、まったく必要ありません。

そうではありませんか:

$spots = Doctrine_Query::create()
    ->from('Template_Spot cts')
    ->leftJoin('Template ct')
    ->leftJoin('Location uc')
    ->where('uc.id = ?', $locationid)
    ->execute();
于 2010-04-16T06:46:18.167 に答える