CakePHP3:如果结果是集合,如何获取查询结果?

时间:2016-12-02 17:28:14

标签: cakephp collections count iterator cakephp-3.0

我有以下代码:

$sites = $this->Sites->find()
->contain([
    'Sitecategories',
    'Sitedescriptions.Languages',
    'Countries',
    'Users'
])
->where([
    'postcode LIKE' => $this->request->data['numero'] . '%'
])
->sortBy(function($row) { return substr($row->postcode, 0, 2); }, SORT_ASC);

调试($位点);显示:

object(Cake\Collection\Iterator\SortIterator) {

'count' => (int) 428

}

但我不明白如何访问该计数var。

我尝试访问$sites->count(),但收到以下错误消息:

Error: You cannot issue a count on a Collection.

2 个答案:

答案 0 :(得分:1)

另一种可能的解决方案是使用缓冲迭代器。

$collection = new Collection([1,2,3]);
$collection->count(); //throws exception
$collection->buffered()->count(); //gives 3

答案 1 :(得分:0)

您必须使用count($sites->toArray())