Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
На въюхе у меня должно быть два цикла: один выводит все категории, второй, который находится внутри первого, выводит все бренды данной категории. Пример:
//model
$categories = DB::table('products')
->join('categories', 'products.c_id', '=', 'categories.id')
->select('categories.name as cat')
->groupBy('categories.name')
->get();
$brands = DB::table('products')
->join('categories', 'products.c_id', '=', 'categories.id')
->join('brands', 'products.b_id', '=', 'brands.id')
->select('brands.name as brand')
->where('categories.id', '=', '1')<-- об этом речь пойдёт ниже
->groupBy('brands.name')
->get();
//view
@foreach($categories as $category)
<li><a>{{ $category->cat }}</a>
<ul class="sort-section">
<li><a href="#"><strong>All CPUs</strong></a></li>
@foreach($brands as $brand)
<li><a href="#">{{ $brand->brand }}</a></li>
@endforeach
</ul>
</li>
@endforeach
Проблема заключается в выделенной мною строчкой в модели. Я "выбираю" записи, где `id` категории = 1(проверял или всё остальное работает), когда на самом деле мне нужно выбирать `id` поточной категории(поточной на въюхе). Другими словами, если бы я это делал по-простому и по-неправильному, то я бы второй запрос осуществлял бы внутри первого `foreach` на въюхе. Каким образом можно решить данный вопрос?
Не в сети
Всем спасибо, уже работает:
$getAll = DB::table('categories')
->leftJoin('products', 'products.c_id', '=', 'categories.id')
->leftJoin('brands', 'brands.id', '=', 'products.b_id')
->groupBy('brands.name')
->groupBy('categories.name')
->get([
'categories.id as id',
'categories.name as cat',
'brands.name as brand'
]);
$categories = [];
if (count($getAll)) {
foreach ($getAll as $single) {
if (!isset($categories[$single->id])) {
$categories[$single->id] = new \StdClass();
}
$categories[$single->id]->cat = $single->cat;
$categories[$single->id]->brands[] = $single->brand;
}
}
//View
@foreach($categories as $category)
<li><a>{{ $category->cat}}</a>
<ul class="sort-section">
<li><a href="#"><strong>All {{$category->cat}}</strong></a></li>
@foreach($category->brands as $brand)
<li><a href="#">{{ $brand }}</a></li>
@endforeach
</ul>
</li>
@endforeach
Не в сети
Зачем так извращаться? Почему бы не пойти по пути "The laravel way" ?
Не в сети
что имеется в виду?
Не в сети
что имеется в виду?
$categories = Category::with('products', 'brands')->get(['id',' 'name']};
Не в сети
Страницы 1