如何获取当前用户发表评论的所有帖子。我有桌子之间的关系,但情况对我来说很难。它应该是这样的:
$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);
就是这样。
答案 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进行多次查询。