gpt4 book ai didi

php - Kohana 3.2 'advance' ORM加入

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:50:42 24 4
gpt4 key购买 nike

这是我在应用程序中使用的数据库 ERD。我正在使用 Kohana 3.2。我想要实现的是为当前登录的用户生成菜单。每个用户都可以有多个角色,因此基于该用户应该使用模块填充菜单(与菜单和用户相关)。

我已经通过几个 foreach 循环实现了这一点。是否可以使用 ORM 来做到这一点?

*表“模块”表示菜单项。

编辑:这是我当前的代码。

        $conf_modules = Kohana::$config->load('modules');
$user_roles = $user->roles->find_all();

$result = array();
$array = array();

foreach($user_roles as $user_role)
{
$menus = $user_role->menus->find_all();
$modules = $user_role->modules->find_all();
}


foreach($menus as $menu)
{
$m = $menu->modules->find_all();

$result[]['name'] = $menu->name;

foreach ($m as $a)
{
foreach ($modules as $module)
{
if($a->name == $module->name)
{
foreach ($conf_modules as $key => $value)
{
if($module->name == $key)
{
$array = array(
'module_name' => $module->name,
'text' => $module->display_desc,
'url' => $value['url'],
);
}

}

}

}
array_push($result, $array);
}

}

最佳答案

我认为这应该是一个很好的解决方案。

        $user = Auth::instance()->get_user();

$user_roles = $user->roles->find_all();

$conf_modules = Kohana::$config->load('modules');

$role_modules = ORM::factory('module')
->join('roles_modules')
->on('roles_modules.module_id','=','module.id')
->where('role_id','IN',$user_roles->as_array(NULL,'id'))
->find_all();


$role_menus = ORM::factory('menu')
->join('roles_menus')
->on('roles_menus.menu_id','=','menu.id')
->where('role_id','IN',$user_roles->as_array(NULL,'id'))
->find_all();

$result = array();

foreach ($role_menus as $role_menu)
{
$menu_modules = $role_menu->modules->find_all();

if ( ! isset($result[$role_menu->name]))
$result[$role_menu->name] = array('name' => $role_menu->name);

foreach ($menu_modules as $menu_module)
{
foreach ($role_modules as $role_module)
{
if($menu_module->name == $role_module->name)
{
foreach ($conf_modules as $key => $value)
{
if ($key == $role_module->name)
{
$result[$role_menu->name]['modules'][]['data'] = array('name' => $role_module->display_desc, 'url' => $value['url']);
}

}

}
}
}
}

return array_values($result);

关于php - Kohana 3.2 'advance' ORM加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11639407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com