торт php, где условие возвращает все значения - PullRequest
0 голосов
/ 04 июля 2018

Я использую торт php 3. Я хочу получить данные, используя условие 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 для условия where.

 public function searchProductsByCategory($id){
    $products = TableRegistry::get('Products');
    $query = $products->find('all', [
        'where' => ['category_id' => $id]
    ]);
    return $query;
}

1010 * ТИА *

1 Ответ

0 голосов
/ 04 июля 2018

Ваша ошибка в том, что вы заменили '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);
}

нет необходимости изменять вашу таблицу, это динамически построенный искатель

...