Heim > Backend-Entwicklung > PHP-Tutorial > Wie rufe ich benutzerdefinierte Attribute in Laravel-Modellen beim Laden von Objekten ab?

Wie rufe ich benutzerdefinierte Attribute in Laravel-Modellen beim Laden von Objekten ab?

Susan Sarandon
Freigeben: 2024-10-29 12:43:29
Original
732 Leute haben es durchsucht

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

Benutzerdefinierte Attribute in Laravel-Modellen beim Laden von Objekten abrufen

Problem:

Sie möchten Greifen Sie beim Laden des Modells auf benutzerdefinierte Attribute/Eigenschaften eines Laravel/Eloquent-Modells zu, ohne auf manuelle Schleifen angewiesen zu sein.

Lösung:

Laravel 8:

Definieren Sie Ihr benutzerdefiniertes Attribut als Attribut mit einer Getter-Funktion:

<code class="php">class EventSession extends Eloquent {
    public function availability() {
        return new Attribute(
            get: fn() => $this->calculateAvailability()
        );
    }
}</code>
Nach dem Login kopieren

Laravel 8-:

Methode 1: Hängen Sie Ihr benutzerdefiniertes Attribut an das $appends-Array an und erstellen Sie einen entsprechenden Accessor:

<code class="php">class EventSession extends Eloquent {
    protected $appends = ['availability'];

    public function getAvailabilityAttribute() {
        return $this->calculateAvailability();
    }
}</code>
Nach dem Login kopieren

Methode 2: Überschreiben Sie die toArray()-Methode, um Ihr Attribut explizit einzuschließen:

<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>
Nach dem Login kopieren

Methode 3: Durch mutierte Attribute in toArray() iterieren:

<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>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie rufe ich benutzerdefinierte Attribute in Laravel-Modellen beim Laden von Objekten ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage