メインカテゴリとサブカテゴリをメニューに取り込む簡単なクエリがあります。この作品は完全にメニューにサブカテゴリを表示するのは、Laravelの商品がある場合のみです。
// in controller
$cat=Categories::all();
View::share('categories_menu',$cat);
// in view
@foreach($categories_menu as $category_menu)
@if($category_menu->has('subcategories'))
<ul class="nav nav-stacked cat-nav">
<li>
<a href="#">{{ $category_menu['category_name'] }} </a>
@if($category_menu->subcategories->count())
<ul>
@foreach($category_menu->subcategories as $subcategory)
<li class=""><a href="#">{{$subcategory->sub_cat_name}}</a></li>
@endforeach
</ul>
@endif
</li>
@else
<li><a href="#"><i class="fa fa-link"></i> <span>{{ $category_menu->category_name }}</span></a></li>
@endif
</ul>
@endforeach
これは
Main Category
-Sub Cat
-Sub Cat
Second main category
-Sub in second main category
...
のような出力を作る問題は、それが空でも、サブカテゴリをロードしているということです。結果は奇妙な(画像)である。これは、これまで
$cat = Categories::select('*', DB::raw('category.category_id AS category_id'))
->leftJoin('products', function($join) {
$join->on('products.category_id', '=', 'category.category_id');
})
->leftJoin('sub_category', function($secondjoin){
$secondjoin->on('sub_category.category_id', '=', 'category.category_id');
})
->whereNotNull('products.sub_cat_id')
->get();
クエリですcategory
、sub_categories
、products
- 私はそれらを表示したくないと私はすべての3つのテーブルを結合して、クエリを変更しようとしました
それぞれに1つのサブが2つあるメインカテゴリのみを表示する必要があります。いくつかのより多くのソースまたは私が提供できる何かが必要な場合は、画像の上に、あなたは私の製品テーブル
Category 1
-sub1
Category 2
-sub3
を見ることができます。モデルと
更新:
カテゴリーモデル
class Categories extends Eloquent {
protected $table = 'category';
protected $primaryKey = 'category_id';
public $timestamps = false;
public function products()
{
return $this->hasMany('Product', 'category_id');
}
public function subcategories()
{
return $this->hasMany('SubCategories', 'category_id');
}
}
のサブカテゴリモデル
class SubCategories extends Eloquent {
protected $table = 'sub_category';
protected $primaryKey = 'sub_cat_id';
public $timestamps = false;
public function category()
{
return $this->belongsTo('Category', 'category_id');
}
public function products()
{
return $this->hasMany('Product', 'sub_cat_id');
}
}
製品モデル
class Product extends Eloquent {
protected $table = 'products';
protected $primaryKey = 'product_id';
public function categories()
{
return $this->hasMany('Categories', 'category_id');
}
public $timestamps = false;
}
Eloquantの関係を見ると、多くの労力を節約できます – Vuldo
私はそれらを既に持っています...私のモデルのテーブル間の関係。 –
メインポストに追加できますか?巨大な質問をする方が簡単になる – Vuldo