gpt4 book ai didi

codeigniter 事件记录获取最后 10 条记录并排序 ASC

转载 作者:行者123 更新时间:2023-12-04 02:39:53 25 4
gpt4 key购买 nike

我想知道这个SQL语句是否在Codeigniter事件记录中完成。

SELECT * FROM (
SELECT *
FROM chat
WHERE (userID = $session AND toID = $friendID)
OR (userID = $friendID AND toID = $session)
ORDER BY id DESC
LIMIT 10
) AS `table` ORDER by id ASC

最佳答案

您必须使用事件记录类的 _compile_select()_reset_select() 方法。

$this->db->select('*');
$this->db->from('chat');
$this->db->where("(userID='{$session}' AND toID='{$friendID}')");
$this->db->or_where("(userID='{$friendID}' AND toID='{$session}')");
$this->db->order_by('id', 'DESC');
$this->db->limit('10');

$subQuery = $this->db->_compile_select();

$this->db->_reset_select();

$this->db->select('*');
$this->db->from("{$subQuery} AS table");
$this->db->order_by('id', 'ASC');

$query = $this->db->get();

不幸的是,在 CI 2.0+ 中,_compile_select()_reset_select() 是 protected 方法。真可惜。您必须关注 this tutorial关于扩展 DB 驱动程序,您可以在其中编写如下方法:

function get_compiled_select()
{
return $this->db->_compile_select();
}

function do_reset_select()
{
$this->db->_reset_select();
}

我想花点时间指出,这种类型的操作会更好地由联接服务。你应该考虑改变你的数据库结构,以便连接是可能的和高效的。

关于codeigniter 事件记录获取最后 10 条记录并排序 ASC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11864749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com