0

現在のユーザーがコメントしたすべての投稿を取得する方法。テーブル間に関係がありますが、状況は私には難しいです。次のようになります。

$posts = Yii::app()->user->comments->posts->findAll(); // don't think that is my code, it just for explanation of query chain

そのため、ユーザーがコメントを残したすべての投稿を取得する必要があります。

SQLで私のクエリはうまくいきます:

SELECT tc.title, tc.content, t.post_id
FROM tbl_comment t
JOIN tbl_post tc
ON t.post_id =tc.id
WHERE author_id =43
GROUP BY t.post_id

$CD = new CDbCriteria;
$CD->condition = 'tc.author_id='.Yii::app()->user->id;
$CD->join = 'JOIN tbl_comment tc ON t.id=tc.post_id';
$posts = Post::model()->findAll($CD);

これです。

4

3 に答える 3

2

IN 句を手動で定義するのではなく、addInCondition()を使用できます。

$criteria=new CDbCriteria;
$criteria->addInCondition('id', $postIds)
$posts=Post::model()->findAll($criteria);

Yii のドキュメント ページからソースを表示すると、@Wilq が提案しているものと同様に、コードがパラメーターを分割してから結合していることがわかります。

于 2013-09-27T16:52:09.163 に答える
0

あなたのコードを読むと、$postIds は ID の配列だと思います。そうですか?その場合、$postIds を :id クエリ パラメータに割り当てることはできません。毎回 1 つの投稿 ID で複数のクエリを実行する必要があります。

于 2013-09-27T16:04:18.573 に答える