Как подсчитать результат, используя find () в CakePHP 2.2.4?

Я использую Cakephp 2.2.4 , и мне нужно получить список Lead, который принадлежит пользователю ( id = 106 ).

Результатом запроса является:

array(
    (int) 0 => array(
        'Lead' => array(
            'id' => '6',
            'user_id' => '106',
            'date' => '2012-12-31 22:15:23',
            'ip' => '127.0.0.1',
            'service_id' => '1',
            'location' => 'Rome',
            'message' => 'Message Message',
            'telephone' => null,
            'active' => null
        ),
        'User' => array(
            'id' => '106',
            'email' => '[email protected]',
            'pwd' => '0433c024cb08be13000d59a347e640482843f46f177e95749dc6599c259617fd3491dcb940b47693cbbc7f65a2cc5ef62deca2e600c1be133ad54170f7d1fbd1',
            'role_id' => '3',
            'active' => '1'
        ),
        'Service' => array(
            'id' => '1',
            'name' => 'Primo servizio'
        ),
        'Estimate' => array(
            (int) 0 => array(
                'id' => '1',
                'lead_id' => '6',
                'user_id' => '106'
            )
        )
    )
)

Он выглядит хорошо, но мне нужно подсчитать Оценки (Оценка массива), я хотел бы получить количество оценок, а не массив со всеми полями (таблицы оценок).

Как мне это сделать?

Мне нужно :

Lead array as it shown

User array as it shown

Service array as it shown

Estimate (only the total number of the estimates... in this case 1)

Находка очень проста:

$options = array('conditions' => array('User.id' => 106));

debug($this->Lead->find('all', $options));
0
nl ja de

2 ответы

Попробуйте что-то вроде этого, а не на 100% уверен, что это сработает, но стоит того, если бы я не советовал тралить документы cakephp для извлечения ваших данных:

$options = array(
    'fields' => array('Lead.*', 'User.*', 'Service.*', 'count(Estimate.id)'),
    'conditions' => array('User.id' => 106)
);
3
добавлено
Я получаю следующую ошибку: Ошибка: SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец «Estimate.id» в «списке полей» SQL-запрос: SELECT Lead . *, Пользователь < /code>.*, Сервис . *, count ( Оценка . id ), Lead . id FROM tuofisco . ведет AS Lead LEFT JOIN tuofisco . users AS User ON ( Lead . user_id = Пользователь . id )) LEFT JOIN tuofisco . services AS Service ON ( Lead . service_id = Сервис . id ) WHERE Пользователь . id = 106
добавлено автор Dail, источник
Хм, на самом деле вам может понадобиться вручную настроить соединение в запросе поиска для модели оценки. Может быть полезно -> stackoverflow.com/questions/5079908/ & hellip;
добавлено автор cowls, источник

Не погружаясь слишком далеко во внутренние области Cake ORM, предполагая, что вам не нужно делать это сразу во время запроса, не могли бы вы просто получить count массива оценки программно после извлечения?

http://php.net/manual/en/function.count.php

$leads = $this->Lead->find('all',$options);
foreach($leads as $lead){
  //get the number of estimates for every lead result
  $lead_num = count($lead['Estimate']);
}

Кроме того, вы можете вручную написать запрос соединения для этой выборки и выполнить ее с помощью метода query класса Cake Model. Не зная специфики схемы вашей таблицы и модельных отношений, трудно описать, как структурировать запрос, но это не должно быть слишком сложно, просто взгляните на спецификацию таблицы и извлеките sql COUNT для каждого Оценить с заданным идентификатором.

0
добавлено
Да, но я бы хотел получить его напрямую, не подсчитывая оценки каждого из них. Как мне это сделать ?
добавлено автор Dail, источник
Нужно выполнить соединение в таблице в синтаксисе SQL-запросов, вам может понадобиться вручную записать запрос только для этой выборки и выполнить его непосредственно с помощью метода query на модели Cake api21.cakephp.org/class/model
добавлено автор DeaconDesperado, источник
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp