> 백엔드 개발 > PHP 튜토리얼 > 객체 로드 시 Laravel 모델에서 사용자 정의 속성을 검색하는 방법은 무엇입니까?

객체 로드 시 Laravel 모델에서 사용자 정의 속성을 검색하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-10-29 12:43:29
원래의
769명이 탐색했습니다.

How to Retrieve Custom Attributes in Laravel Models on Object Load?

객체 로드 시 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿