Menu.php 1.8 KB

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