Propel(Symfony内)を使用して、1つのクエリで2つの結合されたMysqlテーブルからデータをフェッチする簡単な方法を取得しようとしています。
私がこの単純なことをしたとしましょう:
$comment = CommentPeer::RetrieveByPk(1);
print $comment->getArticle()->getTitle();
//Assuming the Article table is joined to the Comment table
symfonyはそれを行うために2つのクエリを呼び出します。最初の行はコメント行を取得し、次の行はコメント行にリンクされた記事行を取得します。
今、私は1つのクエリ内でそれらすべてを作成する方法を見つけようとしています。私はそれらに参加しようとしました
$c = new Criteria();
$c->addJoin(CommentPeer::ARTICLE_ID, ArticlePeer::ID);
$c->add(CommentPeer::ID, 1);
$comment = CommentPeer::doSelectOne($c);
しかし、Articleオブジェクトを使用して取得しようとすると
$comment->getArticle()
それでも、Article行を取得するためのクエリを発行します。選択したすべての列を簡単にクリアして必要な列を選択できましたが、それでは目的のPropelオブジェクトが得られず、クエリの生の結果の配列だけが得られました。
では、1つのクエリだけで2つ(またはそれ以上)の結合テーブルの入力されたpropelオブジェクトを取得するにはどうすればよいですか?
ありがとう、
JP