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

您可以使用addInCondition() ,而不是手动定义您的 IN 子句,即:

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

您可以从 Yii 文档页面查看源代码,您会看到那里的代码将参数拆分然后将它们连接起来,类似于 @Wilq 的建议。

于 2013-09-27T16:52:09.163 回答
1

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

尝试:

$criteria->params = array(':id' => implode(',',$postIds));
于 2013-09-27T16:15:52.373 回答
0

阅读您的代码让我认为 $postIds 是一个 ID 数组。那正确吗 ?如果是这样,您不能将 $postIds 分配给 :id 查询参数,您需要每次都使用一个发布的 id 进行多次查询。

于 2013-09-27T16:04:18.573 回答