Согласно второму предложению раздела Containable Behavior Cookbook, contain()
поддерживает предложение limit
.
Новым дополнением к ядру CakePHP 1.2 является ContainableBehavior. Такое поведение модели позволяет фильтровать и ограничивать операции поиска модели.
Я использую CakePHP 2.5.
У меня есть две модели: продукт и категория (отношение HABTM).
Отношения для продукта:
public $hasAndBelongsToMany = array(
'Category' => array(
'className' => 'Category',
'joinTable' => 'categories_products',
'foreignKey' => 'product_id',
'associationForeignKey' => 'category_id',
),
);
Отношения для категории:
public $hasAndBelongsToMany = array(
'Product' => array(
'className' => 'Product',
'joinTable' => 'categories_products',
'foreignKey' => 'category_id',
'associationForeignKey' => 'product_id',
),
);
Я пытаюсь использовать limit
следующим образом:
$cats = $this->Category->find('all', array(
'fields' => array(
'id',
'parent_id'
),
'contain' => array(
'Product' => array(
'fields' => array(
'id',
'name',
),
'limit' => 3,
'order' => array('created DESC'),
),
),
));
В результате выбрано всего 3 продукта. Не 3 продукта в категории. Контейнерное поведение правильно загружено. Как мне получить 3 продукта в каждой категории?