0

我遇到了一个我从未遇到过的fuelphp问题。

在用户个人资料页面上,我允许其他用户发表评论。当我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但限制没有,它仍然列出了所有的评论。尝试了多种变体得到了很多不同的奇怪错误。

4

2 回答 2

1

编辑:我找到了文档的这一部分,它应该可以帮助你:疑难解答

尝试将“限制”放在属性数组中:在当前位置,“限制”限制用户数量,但您正在检索单个用户,因此它不起作用。

试试这个:

$user = Model_User::find($id, array(
    'related' => array(
        'comments' => array(
            'order_by' => array(
                array('id', 'DESC'),
            ),
            'limit' => 5,
        ),
    ),
));
于 2012-11-16T08:58:25.570 回答
0

这里的问题是此查询运行按值查找。这种类型的查找运行 get_one(),并且总是限制为 1。

因此,您的限制不会被忽略,它会被您使用这种类型的 find() 的事实所覆盖。

做你想做的事:

$user = Model_User::query()
    ->where('id', '=', $id)
    ->related('comments')
    ->order_by('comments.id', 'DESC')
    ->rows_limit(5)
    ->get();
于 2012-11-21T17:38:15.847 回答