蛋糕PHP,条件返回所有值

时间:2018-07-04 12:00:37

标签: cakephp-3.0

我正在使用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

1 个答案:

答案 0 :(得分:3)

您的错误仅仅是因为您将'conditions'替换为'where'

在您的控制器中使用

$categoryId = $this->request->getData('category_id');

在您的表格中使用

'conditions' => ['category_id' => $id]

它应该可以工作

无论如何,这不是创建自定义查找器的方法。但是,您甚至不必创建自定义查找器,只需:

使用Dynamic Finder

实际上你可以做到

if($this->request->getData('category_id'))
{
    $categoryId = $this->request->getData('category_id');
    $searcehProduct = $this->Products->findByCategoryId($categoryId);
    dd($searcehProduct);
}

无需更改表格,这是一个动态构造的查找器