2012-11-15 41 views
0

我遇到了一個問題,我從來沒有經歷過加油。Fuelphp ORM相關限制被忽略

在用戶個人資料頁面上,我允許其他用戶發表評論。 而當我在我的控制器功能中使用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, 
     ), 
    ), 
)); 
+0

非常感謝你的答覆,是的,我也試過這一個,它忽略了限制,order_by沒問題,但限制被忽略 – Side

+0

嘗試使用「rows_limit」而不是「limit」,因爲它是在鏈接上描述的第一行 –

+0

相信它或不是我也試過,那也沒有理會,我完全失去了這個線 – Side

0

的這裏的問題是,這個查詢運行由價值發現。這種類型的查找運行get_one(),並始終受限制爲1。

因此,您的限制不會被忽略,它會被您使用此類find()的事實覆蓋。

做你想做什麼:

$user = Model_User::query() 
    ->where('id', '=', $id) 
    ->related('comments') 
    ->order_by('comments.id', 'DESC') 
    ->rows_limit(5) 
    ->get();