객체 로드 시 Laravel 모델에서 사용자 정의 속성 검색
문제:
원하는 항목 수동 루프에 의존하지 않고 모델 로드 시 Laravel/Eloquent 모델의 사용자 정의 속성/속성에 액세스합니다.
해결책:
Laravel 8:
getter 함수를 사용하여 사용자 정의 속성을 속성으로 정의합니다.
<code class="php">class EventSession extends Eloquent { public function availability() { return new Attribute( get: fn() => $this->calculateAvailability() ); } }</code>
Laravel 8-:
방법 1: $appends 배열에 사용자 정의 속성을 추가하고 해당 접근자를 만듭니다.
<code class="php">class EventSession extends Eloquent { protected $appends = ['availability']; public function getAvailabilityAttribute() { return $this->calculateAvailability(); } }</code>
방법 2: 속성을 명시적으로 포함하도록 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 모델에서 사용자 정의 속성을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!