У меня есть приложение CakePHP 1.3 и действительно наслаждаюсь Контейнерное поведение для получения данных.
Предположим, что у меня есть сообщения в отношениях "один ко многим" с комментариями. Я использую Containable для запроса (для разбивки на страницы) списка всех сообщений и принадлежащих комментариев. Но меня интересует только то, сколько комментариев у каждой Почты. Я не нашел никакого способа достичь этого запроса с помощью сдерживаемого без извлечения всех строк комментариев. Я пробовал:
$this->paginate=array(
'fields' => 'Post.title, Post.created',
'contain' => array('Comment'=>'COUNT(*) AS count'),
);
приводит к "Модельному комментарию", не связанному с сообщением об ошибке "Count".
$this->paginate=array(
'fields' => array('Post.title, Post.created'),
'contain' => array('Comment'=>array('fields'=>'COUNT(*) AS count'),
);
не работает, набор результатов содержит для каждого столбца пустой массив комментариев, за исключением последнего, где он содержит поле count, но имеет количество всех комментариев не только принадлежащих им.
Мое другое предположение было
$this->paginate=array(
'fields' => 'Post.title, Post.created, COUNT(Comment.id)',
'contain' => array('Comment'=>array('fields'=>''),
);
но это приводит к ошибке, так как отношения hasMany запрашиваются независимо, поэтому таблица ответов не находится в запросе записей Post. Как я могу подсчитать количество комментариев в сообщении?