对此超级困惑;仅使用标准的烘焙模板对我的模型进行CRUD访问。我正在从较旧版本的cake迁移该项目,但到目前为止,我仍然只使用库存烘焙的控制器和模板。
/**
* Index method
*
* @return \Cake\Http\Response|void
*/
public function index() {
$this->paginate = [
'contain' => ['Associated1', 'Associated2', 'AssociatedEtc']
];
$myModels = $this->paginate($this->MyModel); // returns zero results
$myModels_found = $this->MyModel->find('all'); // finds everything
$this->set(compact('model'));
}
CookBook信息描述了以与最初烘焙控制器时完全不同的方式实现Paginator(并且尝试了此处描述的实现,获得了完全相同的结果)。
重要的是,就像在$myModel_found
中一样,如果我只是通过$model->find()
检索记录,则一切照常返回,因此连接到数据层没有任何麻烦。
如何配置Paginator使其实际上检索我的记录?
更新
经过更多的研究,我发现Paginator对于关联不相关的模型仅返回零结果(即表Model1
中的行对于model2_id
具有0或为空。等等不会返回。即使我删除了contain
条件,这种现象仍然存在。
答案 0 :(得分:-1)
**直到有时,甚至我也陷入同样的境地。在我的控制器中,我有:
** / **
* Index method
*
* @return \Cake\Http\Response|void
*/
public function index()
{
$query = $this->request->query('query');
$this->paginate = [
'contain' => ['Customers', 'Drivers'],
'limit'=>200,
'order'=>[
'pick_date'=>'desc'
]
];
if(!empty($query)){
$this->paginate = [
'conditions'=>[
'destination LIKE' => '%'.$query.'%',
'starting_point LIKE' => '%'.$query.'%'
]
];
}
$rides =$this->paginate($this->Rides);
$this->set(compact('rides'));
}
我犯的错误是在我的视图文件中:
<div class="form-group">
<label class="col-md-3 control-label">Customer</label>
<div class="col-md-4">
<?= $this->Form->control('customer_id',array('class'=>'form-control input-circle', 'options'=>$customers, 'label'=>false)) ?>
</div>
</div>
在我的情况下,“ customer_id”的拼写错误,因此结果未在视图表中显示。但是现在,它可以正常工作。
请检查关联列名称的所有拼写。
如果我在任何地方都弄错了,请不要介意。我是CakePHP 3的学习者。