AdminMenu.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. namespace App\Models\Admin;
  3. use Encore\Admin\Traits\AdminBuilder;
  4. use Encore\Admin\Traits\ModelTree;
  5. use Illuminate\Database\Eloquent\Model;
  6. use Illuminate\Database\Eloquent\Relations\BelongsToMany;
  7. use Illuminate\Support\Facades\Cache;
  8. class AdminMenu extends Model
  9. {
  10. protected $table = 'admin_menu';
  11. use AdminBuilder, ModelTree {
  12. ModelTree::boot as treeBoot;
  13. }
  14. /**
  15. * The attributes that are mass assignable.
  16. *
  17. * @var array
  18. */
  19. protected $fillable = ['parent_id', 'order', 'title', 'icon', 'uri', 'permission'];
  20. /**
  21. * @return array
  22. */
  23. public function allNodes(): array
  24. {
  25. $order = "`order` = 0,`order`";
  26. //分站
  27. $where = [];
  28. $sub_id = get_subsite_id();
  29. if (!empty($sub_id)) {
  30. $where[] = ['is_sub', '=', 1];
  31. }
  32. return static::orderByRaw($order)->where($where)->get()->toArray();
  33. }
  34. /**
  35. * determine if enable menu bind permission.
  36. *
  37. * @return bool
  38. */
  39. public function withPermission()
  40. {
  41. return (bool)config('admin.menu_bind_permission');
  42. }
  43. /**
  44. * Detach models from the relationship.
  45. *
  46. * @return void
  47. */
  48. protected static function boot()
  49. {
  50. static::treeBoot();
  51. static::deleting(function ($model) {
  52. });
  53. }
  54. /**
  55. * 菜单封装装.
  56. * return object
  57. */
  58. public static function menuArr()
  59. {
  60. $order = "`order` = 0,`order`";
  61. $menus = self::orderByRaw($order)->select(['id', 'parent_id', 'title'])->get();
  62. $menu_array = [];
  63. foreach ($menus as $menu) {
  64. $menu_array[$menu['id']] = $menu;
  65. }
  66. $menu_res = [];
  67. foreach ($menu_array as $key => $value) {
  68. $menu_res[$key] = self::getName($value, $menu_array);
  69. }
  70. return $menu_res;
  71. }
  72. public static function getName($value, $list)
  73. {
  74. if ($value['parent_id'] == 0) {
  75. return $value['title'];
  76. } elseif (isset($list[$value['parent_id']])) {
  77. return self::getName($list[$value['parent_id']], $list) . "-{$value['title']}";
  78. }
  79. return "";
  80. }
  81. }