在CakePHP 3.x中,如何计算MySql表中的行数?

时间:2016-10-11 21:19:38

标签: mysql cakephp-3.0

我有一个名为'devices'的MYSQL表。我已经成功完成了所有的垃圾桶/蛋糕烘焙。事实上,我有自动构建的DevicesController.php完全正常工作。但我无法弄清楚如何计算表中的行数。我试过了:

$conn = ConnectionManager::get('default');
$numRows = $conn->execute('select count(*) from devices');

$this->DeviceSetups = TableRegistry::get('Devices');
$numRows = $this->Devices->query('select count(*) from devices'); // both like this
$numRows = $this->Devices->query('select count(*) from devices')->execute();  // and like this

$this->DeviceSetups = TableRegistry::get('Devices');
$numRows = $this->Devices->find('count');

通过mysql_query()并不是一个好主意,因为我已经在app.php中设置了所有访问信息,供CakePHP使用。我尝试使用AnyModel的其他东西不起作用。

前两次尝试返回一个Cake \ Database \ Statement \ MysqlStatement,而不是一个带有表中行数的整数。我已经咨询了this回答和this回答,并阅读了CakePHP文档。似乎没有什么告诉我如何计算表,也不知道如何执行原始My SQL命令字符串然后访问结果。

2 个答案:

答案 0 :(得分:2)

TableRegistry::get('DeviceSetups')->find()->count();

请参阅http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#getting-a-count-of-results

答案 1 :(得分:0)

如果你想在表中计算,那么它应该如下所示。

   $count = $this->find()->count();
   echo $count;