在cakephp paginate中强制属于关系

tec*_*_28 0 php pagination cakephp cakephp-1.3

我试图强制加入cakephp的paginate函数.用户有消息,这意味着消息属于用户.我必须在列表中显示它们,所以我需要在这里使用paginate.问题是它没有显示我打算绑定的模型的记录我的代码是:

$userId     = $this->Session->read('SESSION_ADMIN.id');
        $this->helpers['Paginator'] = array('ajax' => 'Ajax');

      $this->Message->bindModel(
           array(
             'belongsTo'=>array(
                 'Npo'=>array(
                   'className'  =>  'Npo',
                 'foreignKey' => 'reciever_id',
                 'fields'     => 'Npo.username'
               )          
           )
        )
    );
    $this->paginate = array('conditions'=>array('Message.sender_id'=>$userId,'Message.sender'=>'Admin'),
                            'order'     => array('Message.modified DESC'),
                            'limit'     =>'1'
                              );     
    $sentMsg =  $this->paginate('Message');
    //$sentMsg =  $this->Message->find('all');
    pr($sentMsg);die();
Run Code Online (Sandbox Code Playgroud)

当我取消注释FIND语句时,它会显示我的记录但是在分页的情况下它不会.它也没有显示我在分页查询中的连接,但它在计数记录中.任何人都有一个想法.我不想使用分页加入这里.有没有办法强制属于这里?

关心Himanshu Sharma

Elt*_*kes 7

你有没有尝试过:

$this->Message->bindModel(
           array(
             'belongsTo'=>array(
                 'Npo'=>array(
                   'className'  =>  'Npo',
                 'foreignKey' => 'reciever_id',
                 'fields'     => 'Npo.username'
               )          
           )
        ), false // Note the false here!
    );
Run Code Online (Sandbox Code Playgroud)

分页器实际上执行两个查询:一个用于计算记录总数,另一个用于实际获取所需记录.默认情况下,bindModel()在每次查询后都会重置使用中创建的关联.这取决于查询首先出现的Cake版本,但我相信在你的情况下它是count查询; 离开实际结果查询没有关联.设置falseon bindModel()的第二个参数可防止在第一个查询后重置关联.