我正在學習 Laravel 并試圖創建一個 Megamenu。但我可以呼叫父選單,我堆疊在第一個孩子和第二個孩子。
同一個孩子屬于每個父母。
<div class="navbar-mega">
<div class="dropdown-mega">
@php
$categories = App\Models\Category::where('parent_id', 0)->orderBy('order_level','ASC')->get();
@endphp
@foreach ($categories as $item)
<button class="dropbtn-mega"> {{$item->id}}</button>
@endforeach
<div class="dropdown-content-mega">
<div class="row-mega">
@php
$subcategories = App\Models\Category::where('parent_id',
$item->id)->orderBy('name','ASC')->get();
@endphp
@foreach ($subcategories as $subcategory)
<div class="column-mega">
<h3>{{$subcategories}}</h3>
<a href=""></a>
</div>
@endforeach
</div>
</div>
</div>
</div>
資料庫欄位
子類別查詢輸出
uj5u.com熱心網友回復:
在控制器中使用以下代碼的更好方法。并在模型中創建關系。
$categories = App\Models\Category::where('parent_id', 0)->orderBy('order_level','ASC')->get();
在您的模型中使用子父關系:
public function children()
{
return $this->hasMany(Category:Class,'parent_id');
}
并用于with獲取父子樹
$categories = App\Models\Category::with('children)->where('parent_id', 0)->orderBy('order_level','ASC')->get();
您可以使用
dd($categories);
并輕松使用回圈。
uj5u.com熱心網友回復:
此代碼:
$subcategories = App\Models\Category::where('parent_id',$item->id)->orderBy('name','ASC')->get();
不在通過 $categories 作為 $item 的回圈內。因此,當它被執行時,它也將回傳相同的類別集(因為 $item 在代碼中的那個點將始終是相同的值。
把它放在回圈中:
@foreach ($categories as $item)
<button class="dropbtn-mega"> {{$item->id}}</button>
<div class="dropdown-content-mega">
<div class="row-mega">
@php
$subcategories = App\Models\Category::where('parent_id',
$item->id)->orderBy('name','ASC')->get();
@endphp
@foreach ($subcategories as $subcategory)
<div class="column-mega">
<h3>{{$subcategories}}</h3>
<a href=""></a>
</div>
@endforeach
</div>
</div>
@endforeach
它應該可以正常作業。
uj5u.com熱心網友回復:
您可以使用 append 來獲取子類別,在您的類別模型中使用它,
protected $appends = [
'sub_categories'
];
public function getSubCategoriesAttribute()
{
return Category::where('parent_id', $this->id)->orderBy('name','ASC')->get();
}
<div class="navbar-mega">
<div class="dropdown-mega">
@php
$categories = App\Models\Category::where('parent_id', 0)->orderBy('order_level','ASC')->get();
@endphp
@foreach ($categories as $category)
<button class="dropbtn-mega"> {{ $category->id }}</button>
@endforeach
<div class="dropdown-content-mega">
<div class="row-mega">
@foreach ($category->sub_categories as $subCategory)
<div class="column-mega">
<h3>{{ $subCategory->name }}</h3>
<a href=""></a>
</div>
@endforeach
</div>
</div>
</div>
</div>
uj5u.com熱心網友回復:
我認為你的表結構不合適。也許您正在嘗試創建一個無窮大的類別、子類別和其他人員。在這種情況下,你可能會經歷這個。
表列名稱應該像
id parent_id level name .....
簡短的 :
id 作為主鍵,parent_id 將是您的 db 表主 id 的外鍵,其他列將如您所愿。
如何閱讀所有員工?
您可以按照以下步驟操作。
$categories = Category::query()->where('parent_id',0)->get() // You may put order by something.
注意:你會從這個查詢中得到什么?答案是,您將獲得所有父類別。
現在閱讀每一個父母類別和他們的孩子。
如何閱讀父母的類別和他們的孩子?
初讀父類別
foreach($categories as $key=>$category){
echo $category->name; // Your Parent Category is here.
}
二、閱讀父子類
foreach($categories as $key=>$category){
echo $category->name; // Your Parent Category is here.
// Must check is child category found or not. Otherwise your error can be arrise.
if($categories->subCategories->count()){
foreach($categories->subCategories as $k=>$subCategory){
echo $subCategory->name;
}
}
}
一個問題可以在這里$categories->subCategories->count() && foreach($categories->subCategories as $k=>$subCategory)?
如果你有這樣的問題。
答案如下:
注意:您必須在 Category Model 中添加一個關系方法,例如 A Parent Category can be More Child SubCategory
將此方法添加到您的類別模型。
public function subCategories(){
return $this->hasMany(Category::class,'parent_id');
}
現在您將獲得平滑的輸出。
玩得開心。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/312824.html
