我想制作菜单和子菜单动态。我用链接制作菜单但无法制作子菜单,请帮我修改数据库结构
表名:menu
id menu_name url timestamps
表:sub_menu
id submenu_name link menu_id timestamps
我的查询就像这样
public function menu()
{
$sql=\DB::table('menu')->rightjoin('sub_menu','menu.id','=','sub_menu.menu_id')
->select('submenu_name','link','url','menu_id','menu_name','menu.id')->get();
return view('products.show.menu',compact('sql'));
}
视图
<ul>
@foreach($sql as $key => $nav)
@if($key > 0)
<li>
<a href="#">{{$nav->menu_name}}</a>
@if (count($nav->submenu_name) > 0 )
<ul>
@foreach($nav->submenu_name as $child)
<li><a href="#">{{$child->submenu_name}}</a></li>
@endforeach
@endif
</ul>
</li>
@endif
@endforeach
</ul>
答案 0 :(得分:1)
您是否为这些表设置了模型?对于每个菜单/子菜单组合,您的查询将返回多行,这意味着您无法像现在一样迭代它。这里不需要使用查询构建器。
假设您的模型设置如下(您需要检查关系中使用的命名空间):
class Menu extends Eloquent
{
protected $table = 'menu';
public function submenu()
{
return $this->hasMany('App\SubMenu');
}
}
class SubMenu extends Eloquent
{
protected $table = 'sub_menu';
public function menu()
{
return $this->belongsTo('App\Menu');
}
}
在您的控制器中,您可以执行以下操作:
public function menu()
{
$menu = Menu::with('submenu')->get();
return view('products.show.menu', compact('menu'));
}
然后在你看来:
<ul>
@foreach($menu as $menuItem)
<li>
{{ $menuItem->menu_name }}
@if( ! $menuItem->submenu->isEmpty())
<ul>
@foreach($menuItem->submenu as $subMenuItem)
<li>{{ $subMenuItem->submenu_name }}</li>
@endforeach
</ul>
@endif
</li>
@endforeach
</ul>
答案 1 :(得分:0)
您可以在没有控制器的情况下使用它
function testreply() {
var threads = GmailApp.getInboxThreads();
Logger.log(threads[0].getFirstMessageSubject());
threads[0].reply("test reply");
}