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

Mysql AR获得自己的帖子和朋友的帖子,mysql,codeigniter,activerecord,codeigniter-2,Mysql,Codeigniter,Activerecord,Codeigniter 2,我有这些桌子 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('po

我有这些桌子

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
为什么不是一个次级选举

select * from posts 
where user_id IN (
    select user_followers.follower_id 
        from user_followers 
        where user_followers.user_id=$user_id) 
    OR posts.user_id = $user_id;
->where()支持向其传递任何字符串,如果您分别传递第二个和第三个参数NULL和FALSE,它将在查询中使用该字符串。这会告诉CI不要转义查询。 例如


或者,您可以查看此子查询库

正常的mysql查询是否有效?您可以将查询拆分为两个查询,并将结果存储在同一个数组中。嗯,这也不是一个坏主意。谢谢您仍然在重复它:(请注意,这将涉及对
posts
的完整扫描,因为在
MySQL
中,
in
构造始终使外部表处于前导位置。
SELECT  p.*
FROM    (
        SELECT  user_id
        FROM    user_followers
        WHERE   follower_id = $user_id
        UNION ALL
        SELECT  $user_id
        ) uf
JOIN    posts p
ON      p.user_id = uf.user_id
$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);