0

すべてが適切にページ付けされるいくつかのアクションがありますが、この「結合された」クエリで何が起こっているのかわかりません。指定したように一度に 3 つだけではなく、テーブルにすべての投稿が表示されます。

 public function index() { 
    $this->paginate = array(
    'joins' => array(
        array(
            'table' => 'Users',
            'type' => 'inner',
            'limit' => 3,
            'fields' => array('User.username'),
            'conditions' => array('Users.id = Post.user_id')
            )
        ));
    $posts = $this->paginate('Post');
    $this->set(compact('posts'));
}

ここの下を編集

table Users
id | username | password

table Posts
id | body | user_id | created

この機能は機能しますが、ページ付けされません。

public function index() { 
  $options['joins'] = array(
    array('table' => 'Users',
        'type' => 'inner',
        'fields' => array('User.username'),
        'conditions' => array('Users.id = Post.user_id')
        )
    );
    $post = $this->Post->find('all', $options);
    $this->set('posts', $post);
}
4

4 に答える 4

2

これを試して :

Your Model class should have relationship like :

Post Model :
public $belongsTo = array('User');

Post Controller :

$this->Post->recursive = 1;
$this->set('posts', $this->paginate());

Index View :
<table >
    <thead>
    <tr>
            <th><?php echo $this->Paginator->sort('id'); ?></th>
            <th><?php echo $this->Paginator->sort('body'); ?></th>
            <th><?php echo $this->Paginator->sort('User.username'); ?></th>
        <tr>
<?php foreach ($posts as $post){ ?>
    <tr>
    <td><?php echo h($post['Post']['id']); ?>&nbsp;</td>
        <td><?php echo h($post['Post']['body']); ?>&nbsp;</td>
        <td><?php echo h($post['User']['username']); ?>&nbsp;</td>
    </tr>
<?php } ?>    
于 2012-08-07T06:03:44.620 に答える
0

これを読む:-

http://book.cakephp.org/2.0/en/core-libraries/components/pagination.html

Paginateは参加を好まない

一般的なページ付け値の定義に加えて、コントローラーで複数のページ付けデフォルトのセットを定義できます。構成するモデルにちなんで配列のキーに名前を付けるだけです。

<?php
class PostsController extends AppController {

    public $paginate = array(
        'Post' => array (...),
        'Author' => array (...)
    );
}

PostキーとAuthorキーの値には、モデル/キーから$paginate配列を差し引いたものに含まれる可能性のあるすべてのプロパティを含めることができます。

于 2012-08-07T03:44:09.240 に答える
0
public function index() { 
$this->paginate = array(
'joins' => array(
    array(
        'table' => 'Users',
        'type' => 'inner',
        'fields' => array('User.username'),
        'conditions' => array('Users.id = Post.user_id')
        )
    ),
   'limit' => 3);
$posts = $this->paginate('Post');
$this->set(compact('posts'));
}
于 2012-11-27T11:01:04.630 に答える