提问者:小点点

AR获得自己的帖子和朋友的帖子


我有这些桌子;

user - contains user_id | username | fullname | email etcc
user_followers - contains follow_id| user_id | follower_id | date etcc
posts - contains post_id | user_id | post | post_date 

我试图抓取所有的帖子,由用户正在关注的用户和用户自己的帖子。

我试过了

$this->db->select('posts.*')->from('posts')
        ->join('user_followers', 'user_followers.user_id = posts.user_id', 'INNER')
        ->where('user_followers.follower_id', $user_id)->order_by('posts.post_date','desc');
    $query = $this->db->get(); 

但问题是,我无法从这个查询中获取用户的帖子。我用or_where etc尝试了其他方法,我能够获得用户的帖子,只是数据增加了三倍:(有人能帮我一下吗?非常感谢。

哦,在普通的Mysql中,它;

SELECT  posts.*
FROM    posts
JOIN    user_followers
ON      user_followers.user_id = posts.user_id
WHERE   user_followers.follower_id = $user_id
ORDER BY
    posts.post_date DESC

共1个答案

匿名用户

->where()支持将任何字符串传递给它,并且它将在查询中使用它,前提是您分别传递NULL和FALSE的第二个和第三个参数。这将告诉配置项不要转义查询。例如。

$where_query = "p.user_id = $user_id OR p.user_id IN (SELECT user_id FROM user_followers WHERE follower_id = $user_id)";
->where($where_query,NULL,FALSE);

或者,您可以查看此子查询库https://github.com/ellislab/codeigniter/wiki/subqueries