19, 'weiblich' => 20, 'keine Angabe' => 23 ]; protected static $overviewAttributes = [ 'vorname' => 'firstname', 'nachname' => 'lastname', 'spitzname' => 'nickname', 'staatsangehoerigkeitText' => 'other_country', 'staatangehoerigkeitText' => 'other_country', 'strasse' => 'address', 'nameZusatz' => 'further_address', 'plz' => 'zip', 'ort' => 'location', 'id' => 'id', 'telefon1' => 'main_phone', 'telefon2' => 'mobile_phone', 'telefon3' => 'work_phone', 'telefax' => 'fax', 'email' => 'email', 'geschlecht' => 'geschlecht_text', 'geschlechtId' => 'gender_id', 'emailVertretungsberechtigter' => 'email_parents', 'staatsangehoerigkeitId' => 'nationality_id', 'konfessionId' => 'confession_id', 'geburtsDatum' => 'birthday', 'eintrittsdatum' => 'joined_at', ]; protected $casts = []; protected $nullable = ['further_address', 'other_country', 'nickname']; protected $guarded = []; public static function fromNami($item) { $item = collect($item) ->only(array_keys(static::$overviewAttributes)) ->mapWithKeys(function($item, $key) { return [ data_get(static::$overviewAttributes, $key, $key) => $item ]; }) ->toArray(); return (new self($item)); } public function __construct($member) { parent::__construct($member); } public function getBirthdayAttribute() { return Carbon::parse($this->attributes['birthday'])->format('Y-m-d'); } public function getJoinedAtAttribute() { $date = $this->attributes['joined_at']; return empty($date) ? null : Carbon::parse($date)->format('Y-m-d'); } public function getGenderIdAttribute() { return $this->attributes['gender_id'] == Gender::getNullValue() ? null : $this->attributes['gender_id']; } public function setGeschlechtTextAttribute($v) { $this->attributes['gender_id'] = data_get($this->geschlechtMaps, $v, null); } public function setAttribute($key, $value) { if (in_array($key, $this->nullable) && $value === '') { return parent::setAttribute($key, null); } return parent::setAttribute($key, $value); } }