#php #cakephp #cakephp-3.0 #cakephp-4.x
Вопрос:
на данный момент у меня есть список продуктов, и у каждого продукта есть массив категорий (в каждом массиве есть как минимум 1 объект категории), я также создал фильтр для категорий, поэтому, когда я выбрал их в качестве флажков, а затем нажал «Отправить», я получу массив идентификаторов категорий. Но теперь я действительно не знаю, как я могу получить все ресурсы, категории которых соответствуют отфильтрованным. Мне очень жаль, если мое объяснение не очень ясное.
Вот мой код:
filter.php
<section class="section service border-top">
<?= $this->Form->create(null, ['novalidate' => true, 'type' => 'get']) ?>
<fieldset>
<?php echo $this->Form->control('categories._ids', array('multiple' => 'checkbox', 'options' => $categories));?>
</fieldset>
</br>
<?= $this->Form->button(__('Filter'), ['class' =>'logbtn']) ?>
<?= $this->Form->end() ?>
</section>
productsController.php
public function customerAllProducts()
{
$products = $this->paginate($this->Products);
$this->paginate = [
'contain' => ["Categories"],
];
$categories_filter = $this->request->getQuery('categories._ids');
if(!empty($categories_filter)){
foreach ($categories_filter as $category_filter){
echo $category_filter; // Print out all filtered categories' IDs
}
}
$categries = $this->Productss->Categoriess->find('list', ['limit' => 200]);
$this->set(compact('products','categories'));
}
Спасибо
Комментарии:
1. Вы ищете способ прочитать все товары, соответствующие выбранным категориям ?
2. Да, это так, я все еще борюсь с этим
3. Вы пробовали
matching
функцию по ссылке? Можете ли вы обновить свой вопрос, чтобы показать, что вы пробовали в этом направлении, и что в этом не работает? Например, вы получаете сообщение об ошибке, неправильные результаты, просто не знаете, как получить доступ к тем результатам, которые вы получаете?4. вот что я изменил для
if(!empty($categories_filter))
заявления:5. «Категории», а не «Категории»? Это странно. Но так
$categories_filter
как это массив, вам нужно использовать$q->where(['Categoriess.id IN' => $categories_filter]);