Если у вас меню и подменю храняться в одной таблице то реализовать то что вы хотите довольно легко.
Создаем модель
Menu.phpnamespace App;
use Illuminate\Database\Eloquent\Model;
class Menu extends Model
{
public $timestamps = false;
protected $fillable = ['name', 'value', 'menu_id'];
public function subMenu()
{
return $this->hasMany('App\Menu');//Чтобы вывести подменю
}
}
Создаем таблицу
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateMenusTable extends Migration
{
public function up()
{
Schema::create('menus', function (Blueprint $table) {
$table->increments('id');
$table->string('name')->unique();
$table->string('value')->index();
$table->integer('menu_id')->index()->nullable();
});
}
public function down()
{
Schema::dropIfExists('menus');
}
}
Потом в вашем контроллере выводим только
ОСНОВНЫЕ меню у которых
menu_id поле
null# .. Ваш контроллер
use App\Menu;//подключаем модуль
public function index()
{
$menus = Menu::whereNull('menu_id')->get();//выводим основные меню
return view('menus'. compact('menus'));
}
Теперь в
menus.blade.php выводим меню и подменю
@foreach ($menus as $menu)
{{ $menu->name }} ({{ $menu->value }})//выводим основное меню
@foreach ($menu->subMenu as $sub)
--{{ $sub->name }} ({{ $sub->value }})//выводим подменю
@endforeach
@endforeach
Получаем
Меню1 - значение
--Подменю1 - значение
и т.д
Как то так...