Relação de models laravel
Boa tarde Galera , tudo bom ?
Estou tentando fazer um menu dinamico com laravel , onde cada usuario terá permissão para visualizar partes do menu.
Até o momento , tenho criado as tabelas :
User;
GroupUser;
Menus;
SubMenus;
MenuPermissao;
SubMenuPermissao;
Na tabela Menu , tenho o titulo de cada Menu ;
Na tabela de Sub Menu , tenho o id do menu correspondente e o titulo do sub menu.
Na tabela de Menu permissao , tenho o ID do Menu principal e o ID do grupo de usuario;
Na tabela de SubMenuPermissao , tenho o Id do sub menu e o Id do grupo de usuario.
Assim , um GRUPO de usuario pode ter acesso a varios Menus que por sua vez contem varios submenus.
Nos meu models , tenho o seguinte:
class GroupUser extends Model
{
protected $table = 'GroupUser';
protected $fillable = ['name'];
public function getUser(){
return $this->hasMany('HenriqueFelix\User','group_id');
}
public function getMenus(){
return $this->belongsToMany('HenriqueFelix\Menu', 'menu_permissoes', 'group_id', 'menu_id');//pega todos os menus relacionados a esse grupo
}
public function getSubMenus(){
return $this->belongsToMany('HenriqueFelix\SubMenu', 'sub_menu_permissoes', 'group_id', 'sub_menu_id'); //pega todos os subMenus relacionados a esse grupo
}
}
>
class Menu extends Model
{
protected $table = 'menus';
protected $primaryKey = 'id';
public function getSubMenus(){
return $this->hasMany('HenriqueFelix\SubMenu' , 'menu_id');
}
public function groupsUser(){
return $this->belongsToMany('HenriqueFelix\GroupUser', 'menu_permissoes', 'menu_id', 'group_id'); //pega todos usuarios relacionados e esse menu
}
}
>
class SubMenu extends Model
{
protected $table = "sub_menus";
public function getMenu(){
return $this->belongsTo('HenriqueFelix\Menu' ,'id');
}
public function groupsUser(){
return $this->belongsToMany('HenriqueFelix\GroupUser', 'menu_permissoes', 'menu_id', 'group_id'); //pega todos usuarios relacionados e esse menu
}
}
Gostaria de poder listar todos os Menus junto dos SubMenus pertencentes a ele em que X grupo de usuario possui acesso.
Ex: Usuario : Henrique - Grupo 1 ( administrador )
O grupo administrador pode acessar o menu Relatorios -> usuarios , logs , produtos ( sao os submenus ) ; Ferramentas-> usuarios , produtos , paginas ( submenus ).
Alguem pode ajudar a fazer as relações corretamente nos models ?
Ps.: Estou buscando e tentando listar os dados da seguinte maneira:
$menu = GroupUser::find($id)->with('getMenus')->with('getSubMenus')->firstOrFail();
@for($i = 0; $i < count($menu->getMenus); $i++)
{{ $menu->getMenus[$i]->name}}
{{ $menu->getMenus[$i]->getSubMenus[0]->name }} <br>
@endfor
Se nessa parte 'getSubMenus[0]->name' eu deixo exatamente dessa forma , o laravel da Erro , se eu tiro o [0]->name , ele lista , mas tudo fora de ordem .
Desde ja , grato
Discussão (4)
Carregando comentários...