'integer', 'parent_id' => 'integer', 'status' => AdminMenuStatusCode::class, 'sort' => 'integer', 'created_by' => 'integer', 'updated_by' => 'integer', 'created_at' => 'datetime', 'updated_at' => 'datetime', 'meta' => MetaCast::class, 'path' => 'string', ]; /** * 通过中间表获取角色. */ public function roles(): BelongsToMany { return $this->belongsToMany( AdminRole::class, 'admin_role_belongs_menu', 'menu_id', 'role_id' ); } /** * @return HasMany */ public function children(): HasMany { return $this ->hasMany(self::class, 'parent_id', 'id') ->where('status', AdminMenuStatusCode::Normal) ->orderBy('sort') ->with('children'); } /** * @param Deleting $event * @return void */ public function deleting(Deleting $event): void { $this->roles()->detach(); } }