2011-02-16 40 views
2

嗨, 爲什麼不工作的「訂單」功能?cakephp使用paginate和訂單

$this->paginate = array(
       'limit' => 5, 
       'order' => array(
        'User.name' => 'desc' 
       ), 
       'fields' => array('Post.id', 'Post.title', 'User.name AS aut_name'),       
       'joins' => array(
        array(
         'table' =>'users', 
         'alias' =>'User', 
         'type' =>'LEFT', 
         'conditions' => array(
          'Post.user_id = User.user_id' 
         ) 
        ) 
       ) 
     ); 

     $posts = $this->paginate(); 
     $this->set(compact('posts')); 

DB結構:

posts: 
id, title,body, created, updated, user_id 

users: 
user_id, name 

回答

1

快看你的代碼...是否領域user_ID的用戶表存在嗎?

'conditions' => array(
    'Post.user_id = User.id' 
) 
+0

。我可以正確地得到所有的日期,但數據沒有按條件排序。 – user319854 2011-02-16 17:18:26

1

因爲你在你的fields指定User.name As aut_name,您將無法通過User.name訂購,除非你還在你fields列表有User.name。或者使用:

'order' => array(
    'aut_name' => 'desc' 
), 

注意:這僅適用於初始查詢,通過aut_name從你需要在用戶模型中使用虛擬域視圖進行排序。

此外,正如@Min所說,你的條件是否正確?

+0

「,除非你的字段列表中還有User.name」 - 哪個列表?我chage到「'aut_name'=>'desc'」並添加<?php echo $ paginator-> sort('Author','aut_name'); ?>但沒有工作。爲什麼?謝謝 – user319854 2011-02-16 17:26:05