Eloquent 모델에 사용자 정의 속성 추가
사용자 정의 속성으로 Laravel/Eloquent 모델을 보강하는 기능은 모델 표현을 향상하는 데 필수적입니다. 기본적으로 모델은 테이블 열에 해당하는 속성을 노출합니다. 그러나 데이터베이스를 쿼리하지 않고 추가 데이터나 계산에 액세스하는 것이 바람직한 경우가 많습니다.
한 가지 과제는 모델이 로드될 때 사용자 정의 속성을 채우는 것입니다. 기본 toArray() 메서드는 테이블 열에 직접 매핑되지 않는 접근자를 제외합니다. 이 제한을 극복하려면:
Laravel 버전 >= 8:
getter 함수와 함께 Attribute 클래스를 사용하세요. 이를 통해 테이블 열과 직접적인 관련이 없는 사용자 정의 속성을 정의할 수 있습니다.
<code class="php">class EventSession extends Eloquent { ... public function availability() { return new Attribute( get: fn () => $this->calculateAvailability() ); } ... }</code>
Laravel 버전 < 8:
두 가지 옵션을 사용할 수 있습니다.
옵션 1: 명시적 속성 설정
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); } ... }<p><strong>옵션 2: 사용자 정의 접근자를 통한 루프</strong></p> <p>변경된 모든 속성을 반복하고 이를 배열 표현에 적용합니다.</p> <pre class="brush:php;toolbar:false"><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; } ... }</code>
이러한 기술을 활용하여 개발자는 사용자 정의 속성으로 Eloquent 모델을 강화하여 표현을 풍부하게 하고 애플리케이션 기능을 강화할 수 있습니다.
위 내용은 Eloquent 모델에 사용자 정의 속성을 어떻게 추가할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!