2011-01-20 1 views
0

これは初めてのCakePHPプログラミングです。私はcakePHP 1.3.3を使用しています。私はこの問題にぶつかり、問題の原因を突き止めることができませんでした。 My機能は次のとおりです。私のコントローラの初めにいくつかのレコードの複数の部分を表示するCakephpページング

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

、ページ付けがに設定されている:

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, 
     ), 
    ); 
} 

:私のモデルでは

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

、ユーザーがこのように設定されて私の問題は、私はその関数にアクセスするとき、私は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 
       ) 

     ) 
); 

、マシューは、MySQLデータベース内の唯一の1レコードが存在するにもかかわらず、アレイに4回表示されます。私はなぜそれがこれをやっているのか理解しようとしてきましたが、これまでは成功していませんでした。誰もこれを経験したことがありますか?

+1

設定でデバッグを2に設定します。 paginate()の呼び出しによって生成されたSQLクエリは何ですか? –

答えて

0

正確なSQL Cakeが実行されていないと、これに対する正確な答えを見つけるのは少し難しいですが、私の推測では、関連するテーブルにあるデータと何か関係があります。ユーザーMatthewは、Userテーブルに関連するテーブルの1つに行を関連付けましたか?

あなたはrecursive = 0を使用していますが、これは期待通りではない可能性があります(実際にはbelongsToの関係を持つ他のモデルに結合します)。他のテーブルとの結合を望まない場合は、recursive = -1を使用してください。どのように動作するかは、Cakeのマニュアルのdocumentation for recursiveを参照してください。

関連する問題