Fuelphp ORM相关限制被忽略

时间:2012-11-15 14:45:47

标签: php 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就像一个魅力,但限制不是,它仍然列出所有的评论。 尝试多种变体会产生许多不同的奇怪错误。

2 个答案:

答案 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();