Menu.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Models\System;
  3. use Illuminate\Database\Eloquent\Model;
  4. use Illuminate\Support\Facades\DB;
  5. use Spatie\Permission\Traits\HasPermissions;
  6. use Spatie\Permission\Traits\HasRoles;
  7. use Spatie\Permission\Traits\RefreshesPermissionCache;
  8. class Menu extends Model
  9. {
  10. use HasRoles, HasPermissions, RefreshesPermissionCache;
  11. protected $table = 'system_menus';
  12. protected string $guard = 'web';
  13. protected $attributes = [];
  14. protected $guarded = [];
  15. public static $snakeAttributes = false;
  16. protected $appends = ['permission'];
  17. protected $casts = [
  18. // 'visible' => 'bool',
  19. // 'keepAlive' => 'bool',
  20. // 'alwaysShow' => 'bool',
  21. // 'parent_id' => 'camel'
  22. ];
  23. public function disableAppends()
  24. {
  25. $this->appends = [];
  26. return $this;
  27. }
  28. public function getPermissionAttribute()
  29. {
  30. $tableNames = config('permission.table_names');
  31. $permission_ids = DB::table($tableNames['model_has_permissions'])->where('model_type', Menu::class)->where('model_id', $this->attributes['id'])->pluck('permission_id');
  32. $permission_names = DB::table($tableNames['permissions'])->whereIn('id', $permission_ids)->pluck('name');
  33. return implode('|', $permission_names->toArray());
  34. }
  35. public function setComponentNameAttribute($value)
  36. {
  37. $this->attributes['component_name'] = $value;
  38. }
  39. public function setVisibleAttribute($value)
  40. {
  41. $this->attributes['visible'] = $value ? 1 : 0;
  42. }
  43. public function setAlwaysShowAttribute($value)
  44. {
  45. $this->attributes['always_show'] = $value ? 1 : 0;
  46. }
  47. // public function getVisibleAttribute($value)
  48. // {
  49. // $this->attributes['visible'] = !$value;
  50. // }
  51. public function setKeepAliveAttribute($value)
  52. {
  53. $this->attributes['keep_alive'] = $value ? 1 : 0;
  54. }
  55. }