我正在使用Cake php3。我想使用where条件获取数据。但是它显示的是表中的所有数据,而没有使用where条件过滤数据。 这是我在哪里插入条件数据的观点
<?= $this->Form->create() ?>
<?php
echo $this->Form->control('category_id', ['options' => $categories,'empty'=>'Choose']);
?>
<?= $this->Form->button(__('Submit')) ?>
<?= $this->Form->end() ?>
这是我的控制人
if(!empty($this->request->data['category_id'])){
$categoryId = $this->request->data();
$searcehProduct = $this->Products->searchProductsByCategory($categoryId);
dd($searcehProduct);
}
这是我的ProductTables.php代码,用于哪里条件。
public function searchProductsByCategory($id){
$products = TableRegistry::get('Products');
$query = $products->find('all', [
'where' => ['category_id' => $id]
]);
return $query;
}
TIA
答案 0 :(得分:3)
您的错误仅仅是因为您将'conditions'
替换为'where'
在您的控制器中使用
$categoryId = $this->request->getData('category_id');
在您的表格中使用
'conditions' => ['category_id' => $id]
它应该可以工作
无论如何,这不是创建自定义查找器的方法。但是,您甚至不必创建自定义查找器,只需:
实际上你可以做到
if($this->request->getData('category_id'))
{
$categoryId = $this->request->getData('category_id');
$searcehProduct = $this->Products->findByCategoryId($categoryId);
dd($searcehProduct);
}
无需更改表格,这是一个动态构造的查找器