Laravel/Eloquent에서 사용자 정의 속성은 모델을 toArray() 또는 JSON 형식으로 변환할 때 기본 테이블의 열은 제외됩니다.
Laravel 8 이상:
객체가 로드될 때 속성을 자동으로 계산하고 할당하는 사용자 정의 접근자를 생성하는 속성 클래스.
<code class="php">class EventSession extends Eloquent { public function availability() { return new Attribute( get: fn () => $this->calculateAvailability() ); } }</code>
Laravel 7 이하:
옵션 1 : $appends 속성에 속성 추가
$appends 배열에 사용자 정의 속성을 추가하고 적절한 접근자를 정의합니다.
<code class="php">class EventSession extends Eloquent { protected $appends = ['availability']; public function getAvailabilityAttribute() { return $this->calculateAvailability(); } }</code>
옵션 2: toArray() 재정의 메서드
toArray() 메서드를 재정의하고 사용자 정의 속성을 명시적으로 설정하거나 반복합니다.
<code class="php">class Book extends Eloquent { public function toArray() { $array = parent::toArray(); $array['upper'] = $this->upper; return $array; } public function getUpperAttribute() { return strtoupper($this->title); } }</code>
옵션 3: 변경된 속성을 통한 루프
모델의 변경된 속성을 반복하여 toArray() 배열에 적용합니다.
<code class="php">class Book extends Eloquent { public function toArray() { $array = parent::toArray(); foreach ($this->getMutatedAttributes() as $key) { if (!array_key_exists($key, $array)) { $array[$key] = $this->{$key}; } } return $array; } public function getUpperAttribute() { return strtoupper($this->title); } }</code>
위 내용은 로드 시 Laravel/Eloquent 모델에 사용자 정의 속성을 추가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!