1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- <?php
- namespace App\Models\Admin;
- use Encore\Admin\Traits\AdminBuilder;
- use Encore\Admin\Traits\ModelTree;
- use Illuminate\Database\Eloquent\Model;
- use Illuminate\Database\Eloquent\Relations\BelongsToMany;
- use Illuminate\Support\Facades\Cache;
- class AdminMenu extends Model
- {
- protected $table = 'admin_menu';
- use AdminBuilder, ModelTree {
- ModelTree::boot as treeBoot;
- }
- /**
- * The attributes that are mass assignable.
- *
- * @var array
- */
- protected $fillable = ['parent_id', 'order', 'title', 'icon', 'uri', 'permission'];
- /**
- * @return array
- */
- public function allNodes(): array
- {
- $order = "`order` = 0,`order`";
- //分站
- $where = [];
- $sub_id = get_subsite_id();
- if (!empty($sub_id)) {
- $where[] = ['is_sub', '=', 1];
- }
- return static::orderByRaw($order)->where($where)->get()->toArray();
- }
- /**
- * determine if enable menu bind permission.
- *
- * @return bool
- */
- public function withPermission()
- {
- return (bool)config('admin.menu_bind_permission');
- }
- /**
- * Detach models from the relationship.
- *
- * @return void
- */
- protected static function boot()
- {
- static::treeBoot();
- static::deleting(function ($model) {
- });
- }
- /**
- * 菜单封装装.
- * return object
- */
- public static function menuArr()
- {
- $order = "`order` = 0,`order`";
- $menus = self::orderByRaw($order)->select(['id', 'parent_id', 'title'])->get();
- $menu_array = [];
- foreach ($menus as $menu) {
- $menu_array[$menu['id']] = $menu;
- }
- $menu_res = [];
- foreach ($menu_array as $key => $value) {
- $menu_res[$key] = self::getName($value, $menu_array);
- }
- return $menu_res;
- }
- public static function getName($value, $list)
- {
- if ($value['parent_id'] == 0) {
- return $value['title'];
- } elseif (isset($list[$value['parent_id']])) {
- return self::getName($list[$value['parent_id']], $list) . "-{$value['title']}";
- }
- return "";
- }
- }
|