在文档Codeigniter 4中找不到行数。
我的模型中的方法:
public function getListCat()
{
$listCat = $this->asArray()->where(['id_user' => $session->id])->get();
return $listCat->num_rows();
我检查“调用未定义的方法CodeIgniter\Database\MySQLi\Result::num_rows()”
如何在Codeigniter 4中获取“num_rows()”数据?
5条答案
按热度按时间00jrzges1#
孩子,我也花了一些时间研究,但现在,我得出了以下结论:
根据框架文档,它使用两种方法来帮助您计算结果:
https://codeigniter4.github.io/userguide/database/query_builder.html#limiting-or-counting-results
然而,在codeigniter论坛上有一些关于最佳方法的讨论,因为理论上,
$builder->countAllResults()
或CountAll()
将对数据库执行另一个查询。在CI 4工作了一段时间后,我注意到了一个奇怪的现象:如果您在模型上调用
get()
,在控制器上调用$queryVarHoldingModelMethodCall->resultID->num_rows
-它将以相同的方式显示行数!我相信,通过这种方式,只在数据库中执行一个查询,因为您可以使用$queryVarHoldingModelMethodCall->getRow()
或$queryVarHoldingModelMethodCall->getResult()
在控制器中调用查询对象在你的例子中我称之为
在您的控制器中,您可以:
你可以检查你传递的是什么值:
//让我知道你是怎么做的,如果它工作,因为我们没有足够的文档到目前为止。我正在重写我的第一个应用程序从CI 3到CI 4,一般来说,它减少了原始代码的1/3。努力工作,期待看到最终的结果。祝你好运!最好的问候
lkaoscv72#
Codeigniter 4没有num_row()函数,就像我回答这个问题时的Codeigniter 3一样。这是我检查是否存在任何数据的方式。我正在尝试重新修改您的代码如下
我希望这将为你工作,否则请引起我的注意。
1dkrff033#
您可以在CI4中将
num_rows()
更改为getNumRows
。它的工作原理相同。除此之外,您必须更改getwhere
的位置czq61nw14#
由于countAllResults也会重置传递给select()的任何字段值,因此只需将false作为第一个参数即可。return(false);
参考-https://codeigniter.com/user_guide/database/query_builder.html#limiting-or-counting-results
6rqinv9w5#
参考:https://codeigniter.com/user_guide/database/results.html?highlight=getnumrows#getNumRows