CakePHP中的分页使用HABTM

时间:2012-06-23 07:13:45

标签: cakephp has-and-belongs-to-many

哇,CakePHP真的没有把这个问题排序。

经过几个小时的搜索,我遇到了下面的解决方案(可能会或可能不会过时),但我在应用paginatior'limit'=>时遇到问题。 10或其他订购。

我缺少什么想法?

我的模特:

public $hasAndBelongsToMany = array(
    'Post' => array(
        'className'              => 'Post',
        'joinTable'              => 'tags_posts',
        'foreignKey'             => 'tag_id',
        'associationForeignKey'  => 'post_id',  
        'order'                  => array('Post.created DESC'),
        'unique'                 => true
    )
);

在我的控制器中查看()

public function view($id) {
    $this->Tag->bindModel(array('hasOne' => array('TagsPost')), false);     
    $this->set('tag', $this->paginate('Tag', array('TagsPost.tag_id' => $id))); 
}

在我看来,我不得不改变:

foreach ($tag['Post'] as $post)

foreach ($tag[0]['Post'] as $post)

2 个答案:

答案 0 :(得分:2)

您的查看方法应如下所示:

public function view($id) {
      $this->Paginate['limit'] = 10;
      $this->Paginate['conditions'] = array('TagsPost.tag_id' => $id);
      $this->Tag->bindModel(array('hasOne' => array('TagsPost')), false);     
      $this->set('tag', $this->paginate('Tag')); 
}

请问它是否对您不起作用。

答案 1 :(得分:0)

使用CakePHP 2.x进行测试

public function view ($id)
{
  $this->paginate = array (
                        'limit' => 10,
                        'conditions' => array('TagsPost.tag_id' => $id)
                    );
  $this->Tag->bindModel(array('hasOne' => array('TagsPost')), false);     
  $this->set('tag', $this->paginate('Tag')); 
}