我有带有代码的MainController:
public function index()
{
$products = Product::with('category')->paginate(15);
return view('main', compact('products'));
}
在刀片服务器中:
<table class="table">
<tr>
<th class="th-1">Name</h2></th>
<th class="th-2">Count <!--<span><i class="fas fa-chevron-up"></i>--></span></th>
<th class="th-3">Price <!--<span><i class="fas fa-chevron-up"></i>--></span></th>
<th class="th-4">Sales <!--<span><i class="fas fa-chevron-up"></i>--></span></th>
<th class="th-5"></th>
</tr>
{{-- {{ dd($products->groupBy('category_id')) }} --}}
@include('products')
</table>
<div class="pagination mt-3">
{{ $products->links() }}
</div>
在产品刀片中:
@forelse($products->groupBy('category.title') as $title => $prods)
{{-- @forelse($products as $product) --}}
<tr class="category">
<td colspan="5">{{ $title }}</td>
</tr>
@foreach($prods as $product)
<tr>
<td>
<div class="icon float-left mr-2">
<span class="{{ $product->category->slug ?? '' }}"><i class="{{ $product->category->icon['font'] ?? 'far fa-file-alt' }}" @isset($product->category->icon['color']) style="color: {{ $product->category->icon['color'] }}" @endisset></i></span>
</div>
<p class="mb-0" data-toggle="tooltip" data-placement="top" title="{{ $product->description }}">
{!! $product->title !!}
</p>
</td>
<td>
{{ $product->product_count }}
</td>
<td>
@if($product->discount)
<del class="text-danger">{{ $product->oldPrice }} $.</del>
{{ $product->price }} $. <span class="text-muted">/ 1 cnt.</span>
@else
{{ $product->price }} $. <span class="text-muted">/ 1 cnt.</span>
@endif
</td>
<td>
{{ $product->sales }}
</td>
<td class="text-right">
<a href="{{ route('showproduct', $product) }}" class="btn btn-success btn-sm">
<i class="fas fa-arrow-right"></i>
Readmore
</a>
</td>
</tr>
@endforeach
@empty
<tr>
<td colspan="5">
<p>-</p>
</td>
</tr>
@endforelse
在模型类别中,我具有关系children
和parent
:
public function children()
{
return $this->hasMany(self::class, 'parent_id');
}
public function parent()
{
return $this->belongsTo(self::class, 'parent_id');
}
public function products()
{
return $this->hasMany(Product::class);
}
现在我在页面上获得产品:
类别
1.产品1
2.产品2
3.产品3
另一个类别
1.产品1
2.产品2
3.产品3
如何添加孩子并获得结果?
类别
1.产品
2.产品
----- 类别儿童
----- 1.产品
----- 2.产品
另一个类别
1.产品
2.产品
----- 类别儿童
----- 1.产品
----- 2.产品
3.产品
UPDATE
现在我得到了重复项:
类别
1.产品1
2.产品2
3.产品3
另一个类别
1.产品1
2.产品2
3.产品3
如何添加孩子并获得结果?
类别
1.产品
2.产品
----- 类别儿童
----- 1.产品
----- 2.产品
另一个类别
1.产品
2.产品
3.产品
类别儿童
1.产品
2.产品
答案 0 :(得分:0)
您可以通过递归实现此行为。主要思想是在父产品具有子产品时将产品称为部分产品。首先要做的是将所有categories
发送到视图,而不是products
。因此,在Controller中:
public function index()
{
$categories = Category::paginate(15);
return view('main', compact('categories'));
}
然后,在视图中,递归循环类别。这是主要思想:
Products.blade:
//Code...
<h1>List</h1>
@foreach ($categories as $category)
@include('partial', ['category' => $category])
@endforeach
//Code...
然后您可以创建一个名为partial.blade
的文件:
{{ $category->title }}
@foreach ($category->products as $product)
{!! $product->title !!}
//Other attributes
@endforeach
@if ($category->children()->count() > 0)
@foreach ($category->children as $child)
@include('partial', ['category' => $child])
@endforeach
@endif
主要思想是在特定类别有子级时调用partial.blade。因此,您再次为每个孩子调用它。