*/ use HasFactory; protected $fillable = [ 'category', 'name', 'simplified', 'phonetic_abbr', 'pinyin_abbr', 'strokes_abbr', ]; protected function casts(): array { return [ 'category' => \App\Enums\ArtistCategory::class, ]; } public function songs() { return $this->belongsToMany(Song::class); } protected static function booted() { // 無論是 creating 或 updating,都執行這段共用的邏輯 static::saving(function ($artist) { $simplified=ChineseNameConverter::convertToSimplified($artist->name);// 繁體轉簡體 $artist->simplified = $simplified; $artist->phonetic_abbr = ChineseNameConverter::getKTVZhuyinAbbr($simplified);// 注音符號 $artist->pinyin_abbr=ChineseNameConverter::getKTVPinyinAbbr($simplified);// 拼音首字母 $chars = preg_split('//u', $artist->name, -1, PREG_SPLIT_NO_EMPTY); $firstChar = $chars[0] ?? null; $artist->strokes_abbr=$firstChar ? ChineseStrokesConverter::getStrokes($firstChar) : null; }); } }