问题
I have used AppServiceProvider to be available for all pages and i want to load all subcategories in their own category in navigation menu now it will load all categories and in the last category it will list all subcategories that have in table please help.
here is image sample
header.blade.php
@foreach($shareData['categories'] as $category)
<li class="dropdown m-menu-fw">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">{{ $category->name }}
<span><i class="fa fa-angle-down"></i></span></a>
@endforeach
<ul class="dropdown-menu" >
<li>
<div class="m-menu-content" style="text-align: center;">
<ul class="col-sm-12" >
<li class="dropdown-header">{{ $category->name }}</li>
@foreach($shareData['subcategories'] as $subcategory)
<li><a href="#">{{ $subcategory->name }}</a></li>
@endforeach
</ul>
</div>
</li>
</ul>
</li>
AppServicePrivider.php
$categories = Category::where('status',1)->get();
$subcategories = Subcategory::where('status',1)->get();
$shareData = array(
'categories'=>$categories,
'subcategories'=>$subcategories
);
view()->share('shareData',$shareData);
Category.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
protected $table = 'categories';
public function posts(){
return $this->hasMany('App\Post');
}
public function subcategory(){
return $this->hasMany('App\Subcategory');
}
}
回答1:
You should use the with('subcategory')
directly on the Category query:
view()->share('shareData',Category::with('subcategory')->where('status',1)->get());
Then your blade view could be:
@foreach($shareData['categories'] as $category)
<li class="dropdown m-menu-fw">
<a href="#" data-toggle="dropdown" class="dropdown-toggle">{{ $category->name }}
<span><i class="fa fa-angle-down"></i></span></a>
<ul class="dropdown-menu">
<li>
<div class="m-menu-content" style="text-align: center;">
<ul class="col-sm-12">
<li class="dropdown-header">{{ $category->name }}</li>
@foreach($category['subcategory'] as $subcategory)
<li><a href="#">{{ $subcategory->name }}</a></li>
@endforeach
</ul>
</div>
</li>
</ul>
</li>
@endforeach
I would change the relation method from subcategory()
to subcategories()
, since it is an HasMany
relation.
来源:https://stackoverflow.com/questions/61197408/how-to-return-subcategory-in-category-nav-menu-in-laravel