Количество товаров рядом с фильтром по брендам - ​​Торт php 3 - PullRequest
0 голосов
/ 09 июля 2020

Друзья, я создал меню брендов для фильтрации товаров. Я пытаюсь указать рядом с брендом количество продуктов.

Я создаю меню брендинга следующим образом:

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);
    }

Я ценю, если кто-нибудь может мне помочь!

...