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

編集:私はドキュメントのこの部分を見つけました、それはあなたを助けるはずです:トラブルシューティング

プロパティ配列に「制限」を設定してみてください。現在の位置では、「制限」はユーザー数を制限しますが、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 に答える