format('Y-m-d H:i:s'); } protected static function boot() { parent::boot(); // 监听 oldman 的创建事件,用于初始化 位置信息 static::saving(function ($person) { if($person->origin_city_code){ list($originProvince, $originCity, $originArea) = Zone::codeToZone($person->origin_city_code); $person->origin_province_id = $originProvince?->id ?? 0; $person->origin_city_id = $originCity?->id ?? 0; $person->origin_area_id = $originArea?->id ?? 0; } if($person->card_city_code){ list($cardProvince, $cardCity, $cardArea) = Zone::codeToZone($person->card_city_code); $person->card_province_id = $cardProvince?->id ?? 0; $person->card_city_id = $cardCity?->id ?? 0; $person->card_area_id = $cardArea?->id ?? 0; $person->card_complete_address = ($cardProvince?->name ?? '未知').'-'.($cardCity?->name ?? '未知').'-'.($cardArea?->name ?? '未知').$person->card_address; } }); } public function scopeValid($q){ $q->where('valid', 1); } public function scopeSort($q) { $q->orderBy('id', 'asc'); } //户主 public function master() { return $this->belongsTo(static::class, 'master_id'); } //年龄 protected function age():Attribute { return Attribute::make( get: fn($value) => $this->birthday ? Carbon::parse($this->birthday)->diffInYears(now()).'岁' : "未知", ); } protected function nowAddress(): Attribute { return Attribute::make( get: fn($value) => $this->house_complete_address ? : $this->real_address, ); } }