3

我有两个变量,$take(limit)和$skip(offset),它们是mysql中limit子句的值。

现在 Code Igniter 向后执行它的限制子句。

例如

$this->db->limit(5,10)LIMIT 10, 5在 MYSQL 中产生。

无论如何,我很难弄清楚如何limit根据设置的两个值中的哪一个来调用函数。

基本上,

如果他们都准备好了,我想打电话

$this->db->limit($take, $skip)

如果只$take设置了我想打电话

$this->db->limit($take)

但是,如果只有$skip is set, e.g. if$skip = 10` 那么我想显示所有行,除了前 10 行,我该怎么做。

我打电话吗

$this->db->limit(null, $skip)or
$this->db->limit(0, $skip)or
$this->db->limit(false, $skip)or
完全不同的东西?

4

3 回答 3

5

我认为您通过回答我们自己的问题找到了您正在寻找的答案,但是如果您想使用 codeigniter 来获取除前 10 行之外的所有行,那么您需要执行类似的操作(我尚未对其进行测试):

$this->db->limit(18446744073709551615, 10)

根据Mysql 文档

To retrieve all rows from a certain offset up to the end of the result set, you can use some large number for the second parameter.
于 2012-12-05T23:20:59.337 回答
2

原来 Code Igniter 有一个未记录的offset功能。

/**
* Sets the OFFSET value
*
* @param    integer the offset value
* @return   object
*/
public function offset($offset)
{
    $this->ar_offset = $offset;
    return $this;
}

所以只要打电话就$this->db->offset($skip)可以了!

于 2012-12-05T23:14:24.327 回答
0

offset是在codeigniter 3 的活动记录中起作用的官方文档

offset($offset) 参数: $offset (int) – 要跳过的行数 返回:
CI_DB_query_builder 实例(方法链接)

返回类型:
CI_DB_query_builder

向查询添加 OFFSET 子句。

于 2018-11-10T22:02:58.707 回答