Как подсчитать общее количество строк таблицы в Cakephp

Как подсчитать общее количество строк таблицы и передать его в переменную? Например, у меня есть таблица товаров, и в ней 10 товаров. Я хочу подсчитать все строки и получить результат 10 и передать его в переменную $rowcount. Как мне это сделать?


person Patrick    schedule 27.11.2013    source источник


Ответы (5)


используйте find('count')

Например:

$total = $this->Article->find('count');

Если вы хотите использовать условие в своем запросе, передайте массив условий, вот пример кода:

$pending = $this->Article->find('count', array('conditions' => array('Article.status' => 'pending')));
person Ma'moon Al-Akash    schedule 27.11.2013
comment
что с условиями? - person Wayne Tun; 02.07.2014

вы также попробуйте это с условием

$rowcount = $this->Product->find('count', array('conditions' => array('Product.fieldName' => 'value')
person Vipul    schedule 27.11.2013

вы можете сделать это с помощью метода find('count')

$this->set('rowcount',$this->Product->find('count'));

или просто используйте функцию count(), если уже есть продукты в переменной $products, чтобы избежать другого запроса Mysql

$this->set('rowcount',count($products));
person Abdou Tahiri    schedule 27.11.2013

Используя это, вы можете подсчитывать данные с прохождением условий, где

    $assignment = TableRegistry::get('Assignment');
    $query = $assignment->find();
    $query->select(['count' => $query->func()->count('id')]);
    $query->where(['Assignment.user_id'=>$user_id]);
    $assignment = $query->toArray();
    $assignment_count = $assignment[0]->count;
    return  $assignment_count;
person kamleshpal    schedule 13.10.2016

В CakePHP 3.x вы можете сделать запрос следующим образом:

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

Or

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

Здесь студент является примером модели. Замените на название вашей модели. Спасибо.

person Kalyan Halder Raaz    schedule 10.03.2019