Reputation: 28284
I am using this query to get all the data but I also need add in it how many rows it's returning.
Here is my code:
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);
}
The $dArray
contains all the data for the users but I also want it to tell me how many users were there.
I was thinking that I would get data within the User object but this is what us gives me
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: "[email protected]"
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
Upvotes: 6
Views: 39673
Reputation: 11202
If you already fetched the rows - sizeof($users);
, like mentioned in other answers.
However, if you want to execute sql's COUNT
, since Cake 3 you can use ->count()
on your query:
$query = $this->User->find('all');
$number = $query->count();
Upvotes: 2
Reputation: 29121
No need to do it in the query - just use PHP:
<?php
$this->User->recursive=-1;
$users = $this->User->find('all', array('conditions'=>array('my_id'=>$id)));
$numUsers = sizeof($users);
This will give you the number of main items (ie Users), since any "extra" data you want to include via recursive or containable will be nested within each individual User array.
Upvotes: 9
Reputation: 588
Maybe you are looking for this...
$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
Ok, now if you want to get the total number of elements that each user, should do the following:
$users = $this->User->find('all');
foreach($users as $key => $user)
$ElementsForEachUser[$key]['totalRows'] = sizeof($user['User']);
Upvotes: 12
Reputation: 173
$conditions = array('somecondition' => $someCond);
$totalUsers = $this->User->find('count', array('conditions' => $conditions));
Upvotes: 2