1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- <?php
- namespace App\Models\System;
- use Illuminate\Database\Eloquent\Model;
- use Illuminate\Support\Facades\DB;
- use Spatie\Permission\Traits\HasPermissions;
- use Spatie\Permission\Traits\HasRoles;
- use Spatie\Permission\Traits\RefreshesPermissionCache;
- class Menu extends Model
- {
- use HasRoles, HasPermissions, RefreshesPermissionCache;
- protected $table = 'system_menus';
- protected string $guard = 'web';
- protected $attributes = [];
- protected $guarded = [];
- public static $snakeAttributes = false;
- protected $appends = ['permission'];
- protected $casts = [
- // 'visible' => 'bool',
- // 'keepAlive' => 'bool',
- // 'alwaysShow' => 'bool',
- // 'parent_id' => 'camel'
- ];
- public function disableAppends()
- {
- $this->appends = [];
- return $this;
- }
- public function getPermissionAttribute()
- {
- $tableNames = config('permission.table_names');
- $permission_ids = DB::table($tableNames['model_has_permissions'])->where('model_type', Menu::class)->where('model_id', $this->attributes['id'])->pluck('permission_id');
- $permission_names = DB::table($tableNames['permissions'])->whereIn('id', $permission_ids)->pluck('name');
- return implode('|', $permission_names->toArray());
- }
- public function setComponentNameAttribute($value)
- {
- $this->attributes['component_name'] = $value;
- }
- public function setVisibleAttribute($value)
- {
- $this->attributes['visible'] = $value ? 1 : 0;
- }
- public function setAlwaysShowAttribute($value)
- {
- $this->attributes['always_show'] = $value ? 1 : 0;
- }
- // public function getVisibleAttribute($value)
- // {
- // $this->attributes['visible'] = !$value;
- // }
- public function setKeepAliveAttribute($value)
- {
- $this->attributes['keep_alive'] = $value ? 1 : 0;
- }
- }
|