cakephp如何在查询中获取计数

时间:2012-05-10 01:50:44

标签: cakephp cakephp-2.0

我正在使用此查询来获取所有数据,但我还需要添加它返回的行数。

这是我的代码:

function getUsers($id){
    $users = $this->User->find('all', array('condition'=>array('my_id'=>$id)));
    $numUsers = sizeof($users);
    $users['User']['Total']= $numUsers;
    echo  json_encode($users);
}

$dArray包含用户的所有数据,但我也想让它告诉我有多少用户。

我在想我会在User对象中获取数据,但这就是我们给我的

Object
0: Object
1: Object
2: Object
3: Object
4: Object
5: Object
User: Object
Total: 6


instead of adding it to the 

0: Object
Company: Object
Group: Object
Team: Array[0]
User: Object
company_id: "20"
created: "2012-04-15 17:35:51"
email: "dd@gmail.com"
expiration_date: "2012-04-15 17:35:00"
firstname: "jason"
grants_id: null
group_id: "1"
id: "1"
lastname: "brawar"
modified: "2012-04-23 14:25:48"
name: null
password: "203e686b6a6938648ddd3eb0a8d95988ac638596"
phone: "abcd"
status: "Active"
type: null
username: "asim"
Total: 1

4 个答案:

答案 0 :(得分:10)

也许你正在寻找这个...

$conditions = array('somecondition' => $someCond);
$totalUsers = $this->User->find('count', array('conditions' => $conditions));

http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#find-count

好的,现在如果你想获得每个用户的元素总数,应该执行以下操作:

$users = $this->User->find('all');
foreach($users as $key => $user)
$ElementsForEachUser[$key]['totalRows'] = sizeof($user['User']);

答案 1 :(得分:7)

无需在查询中执行 - 只需使用PHP:

<?php
$this->User->recursive=-1;
$users = $this->User->find('all', array('conditions'=>array('my_id'=>$id)));
$numUsers = sizeof($users);

这将为您提供主要项目(即用户)的数量,因为您希望通过递归或可包含的任何“额外”数据将嵌套在每个单独的用户数组中。

答案 2 :(得分:2)

$conditions = array('somecondition' => $someCond);
$totalUsers = $this->User->find('count', array('conditions' => $conditions));

答案 3 :(得分:0)

  1. 如果您已经获取了行-sizeof($users);,如其他答案中所述。

  2. 但是,如果要执行sql的COUNTsince Cake 3,则可以在查询中使用->count()

$query = $this->User->find('all');
$number = $query->count();