У меня есть три модели, связанные друг с другом в приложении CakePHP. У меня есть Article
, который принадлежит как Category
, так и Author
. Я запрашиваю для последних статей категории как это:Создание ассоциаций CakePHP умнее
$category = $this->Category->find('first', array(
'conditions' => array(
'Category.slug' => $slug
),
'contain' => array(
'Article' => array(
'Author'
)
)
));
Однако, я заметил, что это очень неэффективная, так как для каждой записи Article
находит он запрашивает мою таблицу authors
базы данных, даже если я уже извлекли данные конкретного автора. Поэтому, если я приведу 10 статей, и все они принадлежат одному автору, CakePHP все равно выдаст 10 отдельныхSELECT
операторов.
Могу ли я сделать CakePHP «умнее» при использовании Контейнерного поведения, чтобы он выдавал только необходимые запросы? В моем случае выведите первый оператор SELECT
, чтобы найти автора, а затем используйте этот результат в последующих Article
строках, если ID совпадает.
Jep: Используйте LINKABLE Поведение или соединение cusotm. – mark