AdminMenu.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. return static::orderByRaw($order)->get()->toArray();
  27. }
  28. /**
  29. * determine if enable menu bind permission.
  30. *
  31. * @return bool
  32. */
  33. public function withPermission()
  34. {
  35. return (bool) config('admin.menu_bind_permission');
  36. }
  37. /**
  38. * Detach models from the relationship.
  39. *
  40. * @return void
  41. */
  42. protected static function boot()
  43. {
  44. static::treeBoot();
  45. static::deleting(function ($model) {
  46. });
  47. }
  48. /**
  49. * 菜单封装装.
  50. * return object
  51. */
  52. public static function menuArr()
  53. {
  54. $order="`order` = 0,`order`";
  55. $menus = self::orderByRaw($order)->select(['id', 'parent_id', 'title'])->get();
  56. $menu_array=[];
  57. foreach ($menus as $menu) {
  58. $menu_array[$menu['id']]=$menu;
  59. }
  60. $menu_res=[];
  61. foreach ($menu_array as $key => $value) {
  62. $menu_res[$key] = self::getName($value, $menu_array);
  63. }
  64. return $menu_res;
  65. }
  66. public static function getName($value, $list)
  67. {
  68. if ($value['parent_id'] == 0) {
  69. return $value['title'];
  70. } elseif (isset($list[$value['parent_id']])) {
  71. return self::getName($list[$value['parent_id']], $list)."-{$value['title']}";
  72. }
  73. return "";
  74. }
  75. }