我遇到了一个我从未遇到过燃料问题的问题。
在用户个人资料页面上,我允许其他用户发表评论。
当我在我的控制器功能中使用related comments limit
时,它就被忽略了。
代码
public function action_view($id)
{
$user = Model_User::find($id, array(
'related' => array(
'comments' => array(
'order_by' => array(
array('id', 'DESC'),
),
),
),
'limit' => 5,
));
if(empty($user)):
Response::redirect(Uri::base() . "welcome/404");
endif;
$this->template->title = $user->username . "'s Profile | " . Config::get('site_name');
$this->template->content = View::forge('user/profile', array('user' => $user));
}
order_by
就像一个魅力,但限制不是,它仍然列出所有的评论。
尝试多种变体会产生许多不同的奇怪错误。
答案 0 :(得分:1)
编辑:我找到了这部分文档,它应该对您有所帮助:troubleshooting
尝试将“限制”放在属性数组中:在当前位置,“限制”限制用户数,但是您正在检索单个用户,因此它不起作用。
试试这个:
$user = Model_User::find($id, array(
'related' => array(
'comments' => array(
'order_by' => array(
array('id', 'DESC'),
),
'limit' => 5,
),
),
));
答案 1 :(得分:0)
此处的问题是此查询按值运行查找。这种类型的find运行get_one(),并始终受限于1.
因此,您的限制不会被忽略,因为您使用此类型的find()会覆盖它。
做你想做的事:
$user = Model_User::query()
->where('id', '=', $id)
->related('comments')
->order_by('comments.id', 'DESC')
->rows_limit(5)
->get();