界, 多个表存在问题,这些表在同一页面上接收相同型号“Post”的条目。单击paginator-number时,应用程序将更改两个表的页面。
我在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'));
在视图中有一个使用$ postsHood作为$ post的foreach循环。 也许你有一个想法,提前谢谢:)
编辑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 PostHood
。id
,PostHood
。B/S
,PostHood
。H
,PostHood
。{ {1}},
CITY
。PostHood
,MARKET
。PostHood
,DATE
。PostHood
,ALTDATE
。PostHood
,{{ 1}}。TIME
,PostHood
。INCOME
,PostHood
。ZIPCODE
,PostHood
。ALIAS
,{{1} }。PostHood
,VEHICLE
。PostHood
,DELIVERYAREA
。PostHood
,SPACE
。PostHood
,STREET
。 PostHood
,HOUSENUMBER
。PostHood
,NAME
。PostHood
,CART
。PostHood
,TEL
。{{ 1}},PostHood
。OWNER
,PostHood
。created
,PostHood
。modified
,PostHood
。{{1} },AGENT
。PostHood
,EXTRADATA
。PostHood
,PARENTID
。PostHood
,BRATED
。PostHood
FROM SRATED
。PostHood
AS REQUESTED
WHERE 1 = 1 ORDER BY PostHood
。ACCEPTED
asc LIMIT 5
显然,Cake尝试使用“PostHood”获取数据,但实际上我想要使用的表“发布”是在收听“Post.field”。我该如何解决这个问题?谢谢:))
答案 0 :(得分:1)
你应该尝试这样的事情:
$this->paginate = array(
'conditions' => array('OR' => array(stuff)),
'limit' => 5
);
$this->set('postsHood', $this->paginate('PostHood'));
我很好奇你为什么要构建扩展另一个模型的模型。
答案 1 :(得分:0)
使用伟大的插件DataTables。这会覆盖蛋糕分页并使用JSON显示结果。
为了将它变成蛋糕,你需要
1。)用于解释sql语句的蛋糕组件: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);
然后你可以在视图中获取数据。