Друзья, я создал меню брендов для фильтрации товаров. Я пытаюсь указать рядом с брендом количество продуктов.
Я создаю меню брендинга следующим образом:
BrandsCell. php
.
$this->loadModel('Brands');
$query = $this->Brands->find('all');
$this->set('brands', $query);
display.ctp
<!DOCTYPE html>
<html>
<body>
<div class="card mb-3">
<div class="card-body">
<h6 class="card-title text-muted">Brands</h6>
<hr>
<?php foreach ($brands as $brand): ?>
<div class="mt-1"><?php echo $this->Html->link($brande->name, array('controller' => 'Brands', 'action' => 'search_brands', $brand->id), array('escape' => false));?>
<b class="badge badge-pill badge-light float-right">***//Product Counter***</b>
</div>
<?php endforeach; ?>
</div>
</div>
</body>
</html>
Когда я ввожу идентификатор бренда через marca_id, он работает хорошо.
$data = $this->Products->find();
$data->select(['Products.id', $data->func()->count('Brands.id')])
->matching('Brands')
->group(['Products.id'])
->where(['Products.brand_id' => 5]);
$total = $data->count();
var_dump($total);
Но у меня возникают трудности с тем, чтобы это в foreach отображалось следующим каждому бренду. Я сделал это, но безуспешно!
<!DOCTYPE html>
<html>
<body>
<div class="card mb-3">
<div class="card-body">
<h6 class="card-title text-muted">Brands</h6>
<hr>
<?php foreach ($brands as $brand): ?>
<?php foreach ($data as $total): ?>
<div class="mt-1"><?php echo $this->Html->link($brand->name, array('controller' => 'Brands', 'action' => 'search_brands', $brand->id), array('escape' => false));?>
<b class="badge badge-pill badge-light float-right"><?php echo $total->count();?></b>
</div>
<?php endforeach; ?>
<?php endforeach; ?>
</div>
</div>
</body>
</html>
Ошибка: Примечание (8): Неопределенное смещение: 1 [CORE / src / Database / FieldTypeConverter. php, строка 134]
Мой final display.ctp выглядел так:
public function display()
{
$this->viewBuilder()->setLayout('loja');
$this->loadModel('Brands');
$this->loadModel('Products');
$data = $this->Products->find();
$data->select(['Products.id', $data->func()->count('Brands.id')])
->matching('Brands')
->group(['Products.id'])
->where(['Products.brand_id' => 5]);
$query = $this->Brands->find('all');
$this->set('brands', $query);
$this->set('data', $data);
}
Я ценю, если кто-нибудь может мне помочь!