Cake PHP对一个模型的多个表进行分页


Cake PHP paginate multiple tables of one model

社区,多个表在同一页面上接收相同模型"Post"的条目时存在问题。单击页码时,应用程序将更改两个表的页面。

我在AppModel中的伪类中尝试了它,它应该可以工作,但我得到了一个错误,说发生了内部错误(错误500(。我发现对应的SQL语句有一个问题,其中有一行未找到。

在AppModel中:

class PostHood extends Post {
    public $useTable = 'posts';
};

该代码使用"class Post extends AppModel"的表"cake_posts"。在控制器中,我试图获得PostHood,如下所示:

$this->paginate['PostHood'] = array(
    'conditions' => array('OR' => array(stuff)),
    'limit' => 5
);
$this->set('postsHood', $this->paginate('PostHood'));

在视图中有一个foreach循环,使用$postsHood作为$post。也许你有个主意,提前谢谢:(

编辑1:更改代码后,我收到了一些错误通知。也许你知道该做什么。AppModel的更改:

class PostHood extends AppModel {
    var $name = 'Post';
    public $useTable = 'posts';
};

控制器:

$this->loadModel('PostHood');
$this->paginate = array(
    'conditions' => array('OR' =>
    array(
        array('AND' => array(   
        array('PostHood.ZIPCODE LIKE' => $userArea . '%'),
            array('PostHood.ALTDATE >' => date("Y-m-d")),
        array('PostHood.AGENT' => '0'),
        array('PostHood.OWNER <>' => $this->UserAuth->getUserId()),
        array('PostHood.PARENTID' => '0'),
        array('PostHood.ACCEPTED' => '0')
    )), [MORE AND ARRAYS]
$this->set('postsHood', $this->paginate('PostHood'));

视图中的相应错误:

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Post.DATE' in 'order clause'

SQL查询:SELECT PostHoodidPostHoodB/SPostHoodHPostHood。CCD_ 8,PostHoodMARKETPostHoodDATEPostHoodALTDATEPostHoodTIMEPostHoodINCOMEPostHoodZIPCODEPostHoodALIASPostHoodVEHICLEPostHoodDELIVERYAREAPostHoodSPACEPostHoodSTREETPostHoodHOUSENUMBERPostHoodNAMEPostHoodCARTPostHoodTELPostHoodOWNERPostHoodcreatedPostHoodmodifiedPostHoodAGENTPostHoodEXTRADATAPostHoodPARENTIDPostHoodBRATEDPostHoodSRATEDPostHoodREQUESTEDPostHood。从usr_web126986_4ACCEPTED。CCD_ 60为CCD_ 61,其中1=CCD_ 62的1阶。DATE asc LIMIT 5

很明显,Cake试图用"PostHood"来获取数据,但我真正想使用的表"posts"正在监听"Post.field"。我该如何解决这个问题?感谢:(

你应该试试这样的东西:

$this->paginate = array(
    'conditions' => array('OR' => array(stuff)),
    'limit' => 5
);
$this->set('postsHood', $this->paginate('PostHood'));

我只是好奇你为什么要构建你的模型来扩展另一个模型。

使用了伟大的插件DataTables。这会覆盖蛋糕分页,并使用JSON来显示结果。

为了将其实现为蛋糕,您需要

1.(用于解释sql语句的cake组件:https://github.com/cnizzdotcom/cakephp-datatable

2.(插件:http://www.datatables.net/index

3.(实施:

$this->paginate = array(
    'fields' => array('Model.field1', 'Model.field2'),
    'conditions' => array( stuff )
);
$response = $this->DataTable->getResponse();
$this->set('response', $response);
$this->set('_serialize','response');
$encode = json_encode($response);
$this->set('dataTablesData', $encode);

然后您可以获取视图中的数据。