首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >代码点火器:按影响两个数据库查询的DB顺序

代码点火器:按影响两个数据库查询的DB顺序
EN

Stack Overflow用户
提问于 2015-03-13 23:43:01
回答 2查看 83关注 0票数 1

我有两个问题,但唯一的第一个,我要按时间排序。第二个,我不知道。

我的代码:

代码语言:javascript
运行
复制
 $query = $this->db->get('dayone_entries');
    $this->db->order_by("time", "desc"); //ordering it

    if ($query->num_rows() > 0) {


        foreach ($query->result() as $row) {
            $data[] = $row;
        }

        $query_user = $this->db->get_where('users', array('uid' => $data->uid));

        foreach ($query_user->result() as $row_user) {
            $data[] = $row_user;
        }

        return $data;

使用上面的代码,它会按时间顺序处理我的两个查询,即$query$query_user,我只想在$query上排序。有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-14 00:11:43

几件事。在Codeigniter中,将$this->db->fn()放在$this->db->get()之前。当运行$this->db->get时,CI存储所有调用并构建查询。例如:

代码语言:javascript
运行
复制
$this->db->order_by("time", "desc");
$rows = $this->db->get('dayone_entries')->result();

$row_users = $this->db->get_where('users', array('uid' => $data->uid))->result();

但是,看起来您确实想要使用一个联接。(我不能百分之百地肯定您的代码,但是请尝试这样的方法)

代码语言:javascript
运行
复制
$this->db->join('users', 'users.uid = dayone_entries.uid');
$this->db->order_by('time', 'desc');
$data = $this->db->get('dayone_entries')->result();

我猜你在使用MySQL。上面的CI应该生成以下查询:

代码语言:javascript
运行
复制
SELECT * FROM dayone_entries
JOIN users ON users.uid = dayone_entries.uid
ORDER BY time DESC;

您可以通过运行哪些查询CI来检查

代码语言:javascript
运行
复制
$this->db->last_query();

(就在$this->db->get();)

票数 1
EN

Stack Overflow用户

发布于 2015-03-14 00:47:58

使用链接方法精确地描述变量:

代码语言:javascript
运行
复制
$query = $this->db->order_by("time", "desc")->get('dayone_entries');

所以它不会影响下一个查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29043716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档