Подсчитать количество постов в cakephp - PullRequest
0 голосов
/ 24 апреля 2011

Я пытаюсь создать меню в торт php, где я также могу узнать, сколько статей находится внутри раздела, должен ли я использовать ручной запрос, или существует какой-то существующий метод для этого?

My site menu:
- Works (12)
- Photos (35)
- Stuff (7)
- Contacts

Моя проблема также в том, что я не понял, как получить доступ к таким данным для каждого представления, это должно быть главное меню, поэтому я должен использовать это в каждом представлении, но если я добавлю его в default.ctp, то каждое модель deos не существует, потому что я не могу получить к ней доступ из вида.

Существует ли какая-то страница, которая говорит об этом?

Ответы [ 2 ]

1 голос
/ 24 апреля 2011

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

$this->Model->find('count');

EDIT

Хорошо, похоже, вы говорите о разных моделях.

Если это используется в меню, это означает, что оно будет отображаться на всех страницах.

У вас есть два способа сделать это.

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

function beforeRender() {
   App::import('Model', array('Work', 'Photo', 'Stuff'));
   $work = new Work();
   $workCount = $work->find('count');

   //do the same for the other

   $this->set('workCount', $workCount);
}

Посмотрите на это для более подробной информации о обратных вызовах: http://book.cakephp.org/view/977/Controller-Methods#Callbacks-984

Во-вторых, вы можете сделать это через помощника. Вы можете поместить тот же код (который находится внутри bforeRender) в помощник, и вы можете вызвать вспомогательный метод.

Более подробную информацию о создании помощника вы можете найти здесь: http://book.cakephp.org/view/1097/Creating-Helpers

0 голосов
/ 24 апреля 2011

Вам поможет поведение CounterCache: http://book.cakephp.org/view/1033/counterCache-Cache-your-count

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