'integer', 'parent_id' => 'integer', 'level' => 'integer', 'status' => 'integer', 'created_at' => 'datetime', 'updated_at' => 'datetime', 'deleted_at' => 'datetime', ]; protected array $search = [ 'level' => '=', 'parent_id' => '=', 'city' => 'like', 'province' => 'like', ]; protected array|bool|string $sortable = false; /** * 获取父级校区. */ public function parent(): BelongsTo { return $this->belongsTo(Campus::class, 'parent_id', 'id') ->where('status', 1) ->whereNull('deleted_at'); } /** * 获取子校区. */ public function children(): HasMany { return $this->hasMany(self::class, 'parent_id', 'id'); } /** * 按省份查询. */ public function scopeProvince(Builder $query, string $province): Builder { return $query->where('province', 'like', '%' . $province . '%'); } /** * 按城市查询. */ public function scopeCity(Builder $query, string $city): Builder { return $query->where('city', 'like', '%' . $city . '%'); } /** * 按层级查询. */ public function scopeLevel(Builder $query, int $level): Builder { return $query->where('level', $level); } /** * 查询启用的校区. */ public function scopeEnabled(Builder $query): Builder { return $query->where('status', 1); } /** * 获取校区下的老师. */ public function teachers(): HasMany { return $this->hasMany(Teacher::class, 'campus_id', 'id') ->where('status', 1) ->whereNull('deleted_at'); } }