class Menu extends Model { protected $table = 'menus'; public function sub_menu(){ return $this->hasMany('App\Menu', 'parent_id'); } }
コントローラー:
class MenuController extends Controller { public function index() { $menus = Menu::where('parent_id', 0)->get(); return view('admin.menus.index',compact('menus')); } }
ビュー:
<ul>
@foreach($menus as $menu)
<li>{{ $menu->title }}
@if($menu->sub_menu->count() > 0)
<ul>
@foreach($menu->sub_menu as $sub)
<li{{ $sub->title }}</li>
@endforeach
</ul>
@endif
</li>
@endforeach
</ul>
テーブルの構造:
---------------------------------------------------------------------- id | title | parent_id ---------------------------------------------------------------------- 1 | Home | 0 ---------------------------------------------------------------------- 2 | Product1 | 0 ---------------------------------------------------------------------- 3 | Product1.1 | 2 ---------------------------------------------------------------------- 4 | Product1.1.1 | 3 ---------------------------------------------------------------------- 5 | Product1.1.2 | 3 ----------------------------------------------------------------------
これは2レベルしか表示されませんが、複数のレベルが必要な場合は、お手伝いください!
ここで問題は何ですか? –
@ AmitGupta.opは、メニューが複数のレベルであれば、ループ内のメニューを表示する必要がありますが、foreachループを使用している場合、2つのステップmenu.iで終了します。ループ中に使用する必要があることを願っています。 – iCoders
@AmitGupta、 2レベルのみですが、複数レベルが必要です。助けてください! –