我一直在玩 CakePHP 3.0 的开发人员预览版,我一直在努力让新的 ORM 与分页一起工作。
在我的 PostsController.php 中,我有:
<?php
namespace App\Controller;
use App\Controller\AppController;
class PostsController extends AppController {
public $name = 'Posts';
public $uses = 'Posts';
public $components = ['Paginator'];
public $paginate = [
'fields' => ['Posts.id'],
'limit' => 1,
'order' => [
'Post.id' => 'asc'
]
];
public function index() {
$posts = $this->paginate('Posts');
$this->set('posts', $posts);
}
}
然而,分页正在工作,但数据没有回来。显然这是因为数据不是直接在新的 ORM 中返回,而是一个对象......有没有人尝试过这个?知道如何解决问题以使其与分页器一起使用吗?
我一直在阅读迁移指南:http ://book.cakephp.org/3.0/en/appendices/orm-migration.html但没有看到任何关于将它与分页器结合的信息。
注意:我无法调试 $posts 并在此处显示它,因为它大约有 2000 行代码,其中包含有关 ORM 的各种内容。这里是品尝师...
object(Cake\ORM\ResultSet) {
[protected] _query => object(Cake\ORM\Query) {
[protected] _table => object(Cake\ORM\Table) {
[protected] _table => 'posts'
[protected] _alias => 'Posts'
[protected] _connection => object(Cake\Database\Connection) {
[protected] _config => array(
'password' => '*****',
'login' => '*****',
'host' => '*****',
'database' => '*****',
'prefix' => '*****',
'persistent' => false,
'encoding' => 'utf8',
'name' => 'default',
'datasource' => object(Cake\Database\Driver\Mysql) {
[protected] _baseConfig => array(
'password' => '*****',
'login' => '*****',
'host' => '*****',
'database' => '*****',
'port' => '*****',
'persistent' => true,
'flags' => array(),
'encoding' => 'utf8',
'timezone' => null,
'init' => array(),
'dsn' => null
)
[protected] _config => array(
'password' => '*****',
'login' => '*****',
'host' => '*****',
'database' => '*****',
'port' => '*****',
'prefix' => '*****',
'persistent' => false,
'encoding' => 'utf8',
'name' => 'default',
'flags' => array(),
'timezone' => null,
'init' => array(),
'dsn' => null
)
[protected] _autoQuoting => false...
因此,您可以看到它是一个巨大的对象,并且可能数据就在其中的某个地方。