Codeigniter:DB命令通过效果两个数据库查询

时间:2015-03-13 23:43:02

标签: php mysql codeigniter

我有两个查询,但只有第一个,我想按时间排序。第二个,我没有。

我的代码:

 $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上订购。有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

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

$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();

但是,看起来你真的想要使用连接。 (我不是100%肯定你的代码,但尝试这样的事情)

$this->db->join('users', 'users.uid = dayone_entries.uid');
$this->db->order_by('time', 'desc');
$data = $this->db->get('dayone_entries')->result();

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

SELECT * FROM dayone_entries
JOIN users ON users.uid = dayone_entries.uid
ORDER BY time DESC;

您可以通过运行

来检查CI运行的查询
$this->db->last_query();

(在您的$ this-> db-> get();)

之后

答案 1 :(得分:0)

使用链接方法来确定变量:

$query = $this->db->order_by("time", "desc")->get('dayone_entries');

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