2011-01-20 66 views
0

這是我第一次用CakePHP編程。我正在使用CakePHP 1.3.3。我遇到了這個問題,我似乎無法弄清楚問題所在。我的功能如下:CakePHP分頁顯示一些記錄的倍數

function view_members(){ 
    $data = $this->paginate('User',array('User.level <=' => '10')); 
    print_r($data); 
} 

在我的控制器的開始,分頁設置爲:

var $paginate = array(
'limit' => 20, 
'order' => array('User.id' => 'asc'), 
'User' => array(
    'fields' => array('User.id','User.level','User.name','User.status'), 
    'recursive' => 0 
) 
); 

在我的模型,用戶設置是這樣的:

class User extends AppModel { 
    var $name = 'User'; 
    var $hasOne = array(
     'Users_detail' => array(
      'className' => 'Users_detail', 
      'dependent' => true, 
     ), 
     'Users_calendar' => array(
      'className' => 'Users_calendar', 
      'dependent' => true, 
     ), 
    ); 
    var $hasMany = array(
     'Users_transaction' => array(
      'className' => 'Users_transaction', 
      'order' => 'Users_transaction.id ASC', 
      'dependent' => true, 
     ), 
     'Users_notice' => array(
      'className' => 'Users_notice', 
      'order' => 'Users_notice.id DESC', 
      'dependent' => true, 
     ), 
    ); 
} 

我的問題是,當我訪問該功能,我得到1記錄的多個實例。

這是我得到的數組:

Array 
(
    [0] => Array 
     (
      [User] => Array 
       (
        [id] => 3 
        [level] => 5 
        [name] => Matthew 
        [status] => 1 
       ) 

     ) 

    [1] => Array 
     (
      [User] => Array 
       (
        [id] => 3 
        [level] => 5 
        [name] => Matthew 
        [status] => 1 
       ) 

     ) 

    [2] => Array 
     (
      [User] => Array 
       (
        [id] => 3 
        [level] => 5 
        [name] => Matthew 
        [status] => 1 
       ) 

     ) 

    [3] => Array 
     (
      [User] => Array 
       (
        [id] => 3 
        [level] => 5 
        [name] => Matthew 
        [status] => 1 
       ) 

     ) 

    [4] => Array 
     (
      [User] => Array 
       (
        [id] => 4 
        [level] => 5 
        [name] => Larry 
        [status] => 1 
       ) 

     ) 

    [5] => Array 
     (
      [User] => Array 
       (
        [id] => 5 
        [level] => 5 
        [name] => Brian 
        [status] => 1 
       ) 

     ) 
); 

在這個例子中,馬修出現在陣4次,即使只有1在MySQL數據庫中的記錄。我一直在試圖弄清楚爲什麼這樣做,但迄今爲止,我還沒有成功。有誰之前經歷過這個嗎?

+1

在您的配置中將調試設置爲2。什麼是通過調用paginate()生成的SQL查詢? – 2011-01-20 07:11:06

回答

0

沒有看到確切的SQL蛋糕正在執行,有點難以找到確切的答案,但我最好的猜測是,它將與相關表中存在的數據有關。用戶Matthew是否在與User表相關的其中一個表中有關聯的行?

您使用的是recursive = 0,但這可能不會達到您所期望的值(它實際上確實與其他型號的連接與belongsTo有關)。如果您不想與其他表格進行任何連接,請使用recursive = -1。請參閱Cake手冊中的documentation for recursive以瞭解它的工作原理。

相關問題