如何使用查询生成器将mysql查询转换为codeigniter?

tquggr8v  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(260)

下面是我的mysql查询:

select * from db_posts LEFT JOIN db_followers  ON db_posts_user_id = db_followers_following AND db_followers_user_id = 276

如何使用查询生成器将其转换为codeigniter?

$this->db->where('db_posts_user_id', 'db_followers_following');
$this->db->where('db_followers_user_id', 276);
$this->db->order_by('db_posts.db_posts_id', 'DESC');
$this->db->join('db_followers', 'db_followers.db_followers_following = db_posts.db_posts_user_id');
$query2 = $this->db->get('db_posts')->result_array();

当我使用mysql查询时,我得到了所需的结果。但是我在使用codeigniter查询时得到一个空数组。我的ci查询有什么问题?

kd3sttzy

kd3sttzy1#

尝试添加“left”选项,告诉它要执行哪种联接:

$this->db->join('db_followers', 'db_followers.db_followers_following = db_posts.db_posts_user_id', 'Left');

我也不确定你需要什么

$this->db->where('db_posts_user_id', 'db_followers_following');

这已经包含在join语句中。
资料来源:http://www.bsourcecode.com/codeigniter/codeigniter-join-query/#left-加入并https://www.codeigniter.com/userguide3/database/query_builder.html

mzsu5hc0

mzsu5hc02#

你为什么用where子句?如果您将其用作“加入”过程的条件,请按以下方式尝试:

$this->db->order_by('db_posts.db_posts_id', 'DESC');
$this->db->join('db_followers', 'db_followers.db_followers_following = db_posts.db_posts_user_id and db_followers_user_id = 276', 'left');
$query2 = $this->db->get('db_posts')->result_array();

注意事项
1) 正如前面的评论所说,如果您想从“db\u posts”获取所有帖子,您应该“left join”。
2) 可以使用and在on子句中添加多个条件,但必须在“”中。所有条件都应该在第二个逗号(,)之前指定,该逗号在提到“left”之前。
希望这会有帮助。让我知道这是否有用

相关问题