РЕДАКТИРОВАТЬ - мне удалось исправить эту проблему с помощью кода из Farray со следующими изменениями:
$categories = $this->Category->find(
'all',
array(
'fields' => array(
'Category.id',
'Category.title'
),
'order' => 'Category.title ASC',
'contain' => array(
'Article' => array(
'fields' => array(
'Article.id',
'Article.title',
'Article.slug',
'Article.main_image'
),
'conditions' => array(
'published' => 1
),
'order' => 'Article.id DESC',
'limit' => 4
)
)
)
);
==================================================================================
Мое приложение имеет контроллер статей и контроллер категорий.Я хочу отобразить все свои категории в нижней части индекса моих статей, и для каждой категории я хочу отобразить 4 статьи в следующем порядке:
Category 1
article 1
article 2
article 3
article 4
Category 2
article 1
article 2
article 3
article 4
etc...
В настоящее время я выполняю это, используя следующий код в моем индексе..ctp
foreach($categories as $category){
echo $category['Category']['title'];
$this->element('related_articles', array('categoryID'=>$category['Category']['id']));
}
По сути, я прохожу все доступные категории и для каждой категории в foreach
- Я вызываю элемент для получения связанных статей
- Этот элементиспользует requestAction для вызова действия контроллера категорий, которое возвращает связанные статьи
- Еще раз, я иду через foreach для отображения всех связанных статей
Этот процесс повторяется для каждой имеющейся у меня категории.Очевидно, что это не лучший способ сделать это.Какой самый лучший способ?
Вот то, что я использую в своей функции просмотра статей контроллера для категорий:
$categories = $this->Article->Category->find(
'all',
array(
'fields' => array(
'Category.id',
'Category.title'
),
'order' => 'Category.id DESC',
'recursive' => 1,
'limit' => 1
)
);
При этом мое время загрузки значительно уменьшается, и если я найду другой более быстрый способ, который был быбольшой ...