如何获得作者发表评论的所有帖子?

时间:2013-09-27 15:59:46

标签: php activerecord yii

如何获取当前用户发表评论的所有帖子。我有桌子之间的关系,但情况对我来说很难。它应该是这样的:

$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);

就是这样。

3 个答案:

答案 0 :(得分:2)

您可以使用addInCondition(),即:

,而不是手动定义IN子句
$criteria=new CDbCriteria;
$criteria->addInCondition('id', $postIds)
$posts=Post::model()->findAll($criteria);

你可以从Yii文档页面查看源代码,你会看到那里的代码将参数分开,然后加入它们,类似于@Wilq的建议。

答案 1 :(得分:1)

如果您需要该参数的字符串,只需在数组上执行implode()

尝试:

$criteria->params = array(':id' => implode(',',$postIds));

答案 2 :(得分:0)

阅读你的代码让我觉得$ postIds是一个ID数组。是对的吗 ? 如果是这样,您不能将$ postIds分配给:id查询参数,您需要每次只发送一个发布的ID进行多次查询。