На въюхе у меня должно быть два цикла: один выводит все категории, второй, который находится внутри первого, выводит все бренды данной категории. Пример:
//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
на въюхе. Каким образом можно решить данный вопрос?
Работает следующим образом:
// Controller
$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
Для такой ситуации в Laravel существует hasManyThrough
Добавояем метод в модель категории, если правильно построена бд и не надо явно указывать по каким полям то так:
class Category extends Model {
public function brands()
{
return $this->hasManyThrough('App\Brand', 'App\Product');
}
}
Теперь в контролере можно вызвать $category->brands
Виртуальный выделенный сервер (VDS) становится отличным выбором
Народ подскажите решениеЕсть пользователь который с консоли вводит числа эти числа переводятся в другую систему координат и их надо записать...
Здравствуйте, что-то совсем запутался с fxmlУ меня есть два Java-класса
У меня при подгрузке данных с rss во время ожидания выводится текст который прописан в stringsМожно ли составить список фраз которые будут выводится...