flushCache(); }); static::deleting(function ($model) { $model->mPermissions()->delete(); $model->mRoles()->delete(); $model->flushCache(); }); } public function roles() :BelongsToMany { $pivotTable = config('admin.database.role_menu_table'); $relatedModel = config('admin.database.roles_model'); return $this->belongsToMany($relatedModel, $pivotTable, 'menu_id', 'role_id')->withTimestamps() ->withoutTrashed()->whereNull($pivotTable.'.deleted_at'); } public function permissions() :BelongsToMany { $pivotTable = config('admin.database.permission_menu_table'); $relatedModel = config('admin.database.permissions_model'); return $this->belongsToMany($relatedModel, $pivotTable, 'menu_id', 'permission_id')->withTimestamps() ->withoutTrashed()->whereNull($pivotTable.'.deleted_at'); } public function mPermissions() { return $this->hasMany(PermissionMenuModel::class, 'menu_id', 'id'); } public function mRoles() { return $this->hasMany(RoleMenuModel::class, 'menu_id', 'id'); } }