2016-10-11 86 views
0

我有一个名为“设备”的MYSQL表。我已经成功完成了垃圾桶/蛋糕烘烤。事实上,我有自动生成的DevicesController.php完全可用。但我不知道如何计算表中的行。我已经试过:在CakePHP 3.x中,如何计算MySql表中的行数?

$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的其他功能,但这种功能无效。

前2尝试返回一个Cake \ Database \ Statement \ MysqlStatement不是一个整数与表中的行数。我已经咨询了this答案和this答案并阅读了CakePHP文档。没有任何东西似乎告诉我如何计算表格以及如何执行原始的My SQL命令字符串,然后访问结果。

+0

如果你的db表叫做'devices',那么表类名/别名通常应该是'Devices',而不是'DeviceSetups' !?除此之外它是'find() - > count()',没有'count'发现者。 ** http://book.cakephp.org/3.0/en/orm/query-builder.html#returning-the-total-count-of-records** | ** http://book.cakephph.org/3.0/en/orm/retrieving-data-and-resultsets.html#getting-a-count-of-results** – ndm

+0

Thx,是的,这是一个错字。我总是改变一些事情以确保我的开发保持专有。在这种情况下,我在变化之间处于中间状态。 –

回答

0

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

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