lup*_*upi 3 limits cakephp find contain cakephp-3.0
我有两个模型,分别命名为 Post 和 Comment,它们由 Post hasMany Comment 和 Comment ownsTo Post 链接。我想获取所有帖子的前五个评论。我会使用这个代码:
$this->Posts->find('all')
->contain([
'Comments' => function($q) {
return $q
->order('created ASC')
->limit(5);
}
]);
Run Code Online (Sandbox Code Playgroud)
这与 limit() 一起工作不正确。请帮助解决这个问题。我使用了这个例子: 如何限制每个记录/组包含的关联? 我试着喜欢这个(在 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']);
}
]);
Run Code Online (Sandbox Code Playgroud)
在邮政控制器中:
$this->Posts->find('all')
->contain([
'TopComments' => function($q) {
return $q
->order('TopComments.created ASC')
->limit(5);
}
]);
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用。我不知道我错在哪里。
小智 6
你应该试试这个
在你的模型中
$this->hasMany('Comments', [
'foreignKey' => 'post_id'
]);
Run Code Online (Sandbox Code Playgroud)
在您的控制器中
$this->Posts->find()
->contain([
'Comments' => function($q) {
return $q
->order(['created' =>'ASC'])
->limit(5);
}
]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5288 次 |
| 最近记录: |