У меня есть две модели с именем Post и Comment, которые связаны Post hasMany Comment и Comment принадлежит To Post. Я хочу получить все сообщения с пятью пятью каждым. Я бы использовал этот код:Cakephp 3 - limit() и содержащаяся модель
$this->Posts->find('all')
->contain([
'Comments' => function($q) {
return $q
->order('created ASC')
->limit(5);
}
]);
Это неправильно работает с пределом(). Пожалуйста, помогите решить эту проблему. Я использовал этот пример: How to limit contained associations per record/group? я пытался это нравится (в модели Post):
$this->hasOne('TopComments', [
'className' => 'Comments',
'strategy' => 'select',
'conditions' => function (\Cake\Database\Expression\QueryExpression $exp, \Cake\ORM\Query $query) {
$query->leftJoin(
['CommentsFilter' => 'comments'],
[
'TopComments.post_id = CommentsFilter.post_id',
'TopComments.created < CommentsFilter.created'
]);
return $exp->add(['CommentsFilter.id IS NULL']);
}
]);
В контроллере сообщение:
$this->Posts->find('all')
->contain([
'TopComments' => function($q) {
return $q
->order('TopComments.created ASC')
->limit(5);
}
]);
К сожалению, это не работает. Я не знаю, где я ошибаюсь.
Возможные дубликат [Как ограничить содержащиеся ассоциации за записи/группы?] (HTTP://stackoverflow.com/questions/30241975/how-to-limit-contained-associations-per-record-group) – arilia