【问题标题】:Codeigniter 4 - how to get the first row and the last row of a resultCodeigniter 4 - 如何获取结果的第一行和最后一行
【发布时间】:2021-07-04 03:15:02
【问题描述】:

我正在尝试获取查询结果的第一行和最后一行。我从 Ci4 的文档中看到,有两种方法可以提供帮助,namley、getFirstRow([$type = 'object'])getLastRow([$type = 'object']),但我在使用它们时遇到了困难。到目前为止,这是我的方法:

function getLoginFailCount($login_fail_ip, $max_login_attempts = 3, $within_seconds = 320){
    $builder = $this->builder('login_fail');
    $builder->where('login_fail_ip', $login_fail_ip);
    $builder->orderBy('login_fail_created_at','DESC');
    $query = $builder->get(3);
    print_r($query->getFirstRow($query));
}

getFirstRow 出现如下错误;

Argument 1 passed to CodeIgniter\Database\BaseResult::getFirstRow() must be 
of the type string, object given

我怎样才能让getFirstRow() 工作?这个文档定义不是说我需要传递一个object吗?为什么错误说我的类型是string

【问题讨论】:

  • 我认为您需要重新阅读文档。你所拥有的没有任何意义。再次阅读文档后,您就会明白为什么。
  • 顺便说一句,这根本没有帮助。

标签: codeigniter codeigniter-4


【解决方案1】:

在 getFirstRow() 的文档中,它声明您可以使用

$row = $query->getFirstRow() // which will give you an object

$row = $query->getFirstRow(‘array’) // which will give you an Array

所以你的错误信息,它指出......

Argument 1 passed to CodeIgniter\Database\BaseResult::getFirstRow()
must be  of the type string, object given

会让你看看然后对自己说,我最好去阅读文档。所以你可以不传入任何内容,也可以传入一个字符串“数组”。

那么现在你能明白为什么了吗

$query->getFirstRow($query))

没有任何意义!为什么要传入 $query 对象作为参数。

您可能误读了文档。我看到你说getFirstRow([$type = 'object'])

你可能对此有点困惑......

[$type = 'object'] 表示$type默认为字符串'object',所以返回的类型默认为对象,不传入任何参数。

如果你希望它返回一个数组,那么你可以指定字符串'array'。那么 $type 参数将被设置为字符串 'array' 并返回一个数组而不是一个对象。

有帮助吗!

【讨论】:

  • 非常感谢。抱歉,我认为 getFirstRow([$type = 'object']) 意味着我必须提供一个对象。好的,有道理,'object' 是 getFirstRow() 中设置的默认类型。非常感谢您的详细回复,学到了很多东西。谢谢。
猜你喜欢
  • 2020-06-21
  • 1970-01-01
  • 1970-01-01
  • 2019-03-09
  • 2019-02-06
  • 1970-01-01
  • 2014-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多