cakephp COUNT предметов в месяц в год - PullRequest
3 голосов
/ 16 апреля 2010

Как вы используете cakephp для подсчета, например, количества постов, создаваемых каждый месяц в году?

Предпочтительно использовать Model-> find ('count') и получить данные в массиве.

Ответы [ 3 ]

4 голосов
/ 31 июля 2012

Я только что сделал нечто подобное, используя только CakePHP (без прямых запросов). Работает в CakePHP 2, не тестировался в 1.x.

Код для вашего примера будет выглядеть примерно так:

$params = array(
  'recursive' => -1,
  'fields' => array('id', 'MONTH(created)')
  'group' => array('YEAR(created)', 'MONTH(created)')
);

$numberOfPosts = $this->Model->find('count', $params);
1 голос
/ 17 апреля 2010

Это близко

Запрос

$data = $this->Post->query("SELECT COUNT(id),MONTH(created) FROM posts GROUP BY YEAR(created), MONTH(created);");

Возвращение

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [COUNT(id)] => 1
                    [MONTH(created)] => 3
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [COUNT(id)] => 2
                    [MONTH(created)] => 4
                )

        )

)
0 голосов
/ 26 апреля 2010

При использовании торта я предпочитаю оставаться как можно ближе к каркасу. Это означает, что я стараюсь избегать написания запросов непосредственно в контроллерах, потому что это приводит к тому, что код модели присутствует везде. Поэтому я рекомендую одно из двух решений

1: (и что я делаю с более сложными вещами): создайте представление для вычисления, которое вы хотите выполнить, и создайте модель для сопоставления.

2: используйте запрос, как упоминалось ранее, но поместите его в класс модели, а не в класс приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...