| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php
- namespace App\Models;
- use Illuminate\Database\Eloquent\Model;
- class Textbook extends Model
- {
- protected $table = 'textbooks';
- protected $fillable = [
- 'id',
- 'series_id',
- 'stage',
- 'schooling_system',
- 'grade',
- 'semester',
- 'naming_scheme',
- 'track',
- 'module_type',
- 'volume_no',
- 'legacy_code',
- 'curriculum_standard_year',
- 'curriculum_revision_year',
- 'approval_authority',
- 'approval_year',
- 'edition_label',
- 'official_title',
- 'aliases',
- 'isbn',
- 'cover_path',
- 'status',
- 'sort_order',
- 'meta',
- 'series',
- 'created_at',
- 'updated_at',
- ];
- protected $casts = [
- 'aliases' => '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] ?? '未归类系列';
- }
- }
|