'array', 'meta' => 'array', 'grade' => 'integer', 'semester' => 'integer', 'volume_no' => 'integer', 'curriculum_standard_year' => 'integer', 'curriculum_revision_year' => 'integer', 'approval_year' => 'integer', 'sort_order' => 'integer', ]; public function __construct(array $attributes = []) { parent::__construct($attributes); // 从 API 数据初始化时设置属性 foreach ($attributes as $key => $value) { $this->setAttribute($key, $value); } } public function series() { return $this->belongsTo(TextbookSeries::class, 'series_id', 'id'); } public function catalogs() { return $this->hasMany(TextbookCatalog::class); } public function getSeriesNameAttribute(): string { $series = $this->series()->first(); if ($series) { return $series->name ?? '未归类系列'; } $seriesId = $this->series_id; if (!$seriesId) { return '未归类系列'; } static $seriesMap = null; if ($seriesMap === null) { $seriesMap = TextbookSeries::query() ->pluck('name', 'id') ->toArray(); } return $seriesMap[$seriesId] ?? '未归类系列'; } }