【问题标题】:How to convert mysql query to codeigniter using query builder?如何使用查询生成器将 mysql 查询转换为 codeigniter?
【发布时间】:2019-04-22 19:58:13
【问题描述】:

以下是我的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 查询有什么问题?

【问题讨论】:

  • 哎呀我忘了。但我仍然只得到 10 行结果,而我在 db_posts 中总共有 400 行。我的查询有什么错误吗?
  • $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'); 有问题$this->db->where('db_followers_user_id', 276);请验证
  • 首先,在没有任何条件的情况下尝试您的查询。然后使用 1 个条件,然后使用第二个条件。它会告诉你真正的问题在哪里。

标签: php mysql codeigniter mysqli codeigniter-3


【解决方案1】:

尝试添加“左”选项来告诉它要执行哪种连接:

$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-joinhttps://www.codeigniter.com/userguide3/database/query_builder.html

【讨论】:

  • oo 让我试试
【解决方案2】:

你为什么使用那些 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)正如之前的 cmets 所说,如果你想从 'db_posts' 获取所有帖子,你应该'Left Join'。

2) 您可以在 ON 子句中使用 and 但在 '' 内添加多个条件。您的所有条件都应在第二个逗号(,)之前指定,即在提及“LEFT”之前。

希望这会有所帮助。让我知道这是否有帮助

【讨论】:

  • 让我试试吧:)
  • 那个工作的人。你节省了我的时间。我从没想过我们可以在“加入”查询生成器中使用和条件。谢谢人 :) 接受这个答案
  • 是的,我们可以使用“AND”条件。很高兴知道它对你有用:)
猜你喜欢
  • 1970-01-01
  • 2023-03-07
  • 2015-12-13
  • 2019-03-09
  • 1970-01-01
  • 2017-12-09
  • 1970-01-01
  • 2017-12-29
  • 2021-10-14
相关资源
最近更新 更多