Да, это правильный путь,
$this->db->where('p.status','Active');
$this->db->where('p.admin_status','Active');
$this->db->select("p.id,p.date,p.user_id,p.title,p.contents,p.category_id,p.status,p.admin_status,u.username,i.mediaid,COUNT(c.id) as comments")->from('posts as p')->limit($num,$start)->order_by($order,$format);
$this->db->join('users u','u.id=p.user_id','left');
$this->db->join('user_meta m', 'm.user_id = p.id','left');
$this->db->join('user_profile_image i', 'i.userid = p.id','left');
$this->db->join('comments c', 'c.postid = p.id','left');
return $this->db->get()->result();