2011-12-16 15 views
0

私は、Doctrine 1.2とSymfony 1.4を使ってクエリを書いています。私はDQLの原則を理解しており、うまくいくいくつかのクエリがあります。しかし、ニーズによっては、DQLで解決策が見つからず、代わりにSQLを使用しています。Doctrine 1.2:DQLでuserprofileをcityとcityに参加させる

ここでは簡単な例を示します:schema.ymlに、都市クラスとの関係を持つsfguarduserprofileクラス(プロファイル内のcity_idを使用)があるとします。 そして、都市クラスと国クラス(都市クラスのcountry_idを使用)との間には関係があります。

私は、DQLクエリを記述して、都市の名前と国名を持つユーザープロファイルを取得しようとしています。かなりシンプルなようですか?

はい、sfguarduserprofileとcountryクラスの間に直接エイリアスやリレーションシップがないため、DQLで「クリーン」なソリューションが見つかりませんでした。

私はsfguarduserprofileと私の国クラスの間に直接の関係を作ることができましたが、私はもはやモデル化のベストプラクティス(MERISE)を尊重しません。

私のCityクラスのselectを使用して、userprofileと国(Cityとこれらの2つのテーブルとの関係があります)を取得できますが、私のsfguarduserprofileから他の結合があるので、

SQLでは、非常に簡単ですが、私はdoctrineオブジェクトを使いたいと思います。

「きれいな」ソリューションをお持ちの場合、私はこれを知って満足しています!

は、私はそれが簡単だったが、私のschema.ymlのは教義のために最適化されていなかったので、それが過去に動作しませんでした、解決策を見つけたあなた

Sandrino

答えて

0

感謝します。次に、動作中のクエリの例を示します。

$q = Doctrine_Query::create() 
     ->select('p.user_id, u.username, c.name, co.name') 
     ->from('sfGuardUserProfile p') 
     ->leftJoin('p.User u') 
     ->leftJoin('p.City c') 
     ->leftJoin('c.Country co') 
     ->orderBy('p.user_id'); 
関連する問題