„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie füge ich benutzerdefinierte Eigenschaften hinzu, wenn das Laravel Eoquent -Modell geladen wird?

Wie füge ich benutzerdefinierte Eigenschaften hinzu, wenn das Laravel Eoquent -Modell geladen wird?

Gepostet am 2025-04-15
Durchsuche:982

How to Add Custom Attributes to Laravel Eloquent Models on Load?

wie man Laravel eloquent -Modelle auf Load benutzerdefinierte Attribute hinzufügt? Betrachten Sie zum Beispiel einen Controller wie diesen:

public function index () { $ sessions = eventSession :: alle (); foreach ($ sissions als $ i => $ session) { $ sissions [$ i]-> verfügbar = $ session-> GetAbleability (); } Return $ Sessions; }

public function index()
{
    $sessions = EventSession::all();
    foreach ($sessions as $i => $session) {
        $sessions[$i]->available = $session->getAvailability();
    }
    return $sessions;
}

Die Lösung

laravel -Versionen> = 8:

Zum Glück gibt es eine elegante Möglichkeit, dies zu erreichen. geschützte $ table = 'sissions'; Öffentliche Funktionsverfügbarkeit () { Neues Attribut zurückgeben ( Get: fn () => $ this-> calculateAwailability () ); } }

laravel -Versionen

Option 1: appleitet Property

für die Versionen weniger als 8, Sie können die Eigenschaft verwenden, um die Eigenschaften zu kontrollieren. Eloquent { geschützte $ table = 'sissions'; Protected $ appends = Array ('Verfügbarkeit'); Öffentliche Funktion GetAvelabilityAttribute () { $ this-> calculateAvailability () zurückgeben; } }
class EventSession extends Eloquent {

    protected $table = 'sessions';

    public function availability()
    {
        return new Attribute(
            get: fn () => $this->calculateAvailability()
        );  
    }
}
option 2: überschreiben Sie toArray () method

Alternativ können Sie die methode von toArray () überschreiben und das Attribut manuell festlegen:

class book erweitert das eloquent {& {& {&&&]

klassifend eloquent {{& {{& {&&&&]

extendends eloquent {{{{{{& subsle {&&&&]
class EventSession extends Eloquent {

    protected $table = 'sessions';
    protected $appends = array('availability');

    public function getAvailabilityAttribute()
    {
        return $this->calculateAvailability();  
    }
}

Option 3: Schleifen Sie durch mutierte Attribute

Wenn Sie zahlreiche benutzerdefinierte Zubehör haben, können Sie sie durch sie durch sie itererieren und sie während der Serialisierung anwenden:

class Book extends Eloquent {

    protected $table = 'books';
    
    public function toArray()
    {
        $array = parent::toArray();
        $array['upper'] = $this->upper;
        return $array;
    }
    
    public function getUpperAttribute()
    {
        return strtoupper($this->title);    
    }

}

klassistes Buch erweitert das eloquent {{{& {& {&&&] klassistes buchstüchtige {oder geschützt $ table = 'bücher'; Öffentliche Funktion TOARRAY () { $ array = parent :: toArray (); foreach ($ this-> getMutatedAttributes () als $ key) { if (! array_key_exists ($ key, $ array)) { $ array [$ key] = $ this-> {$ key}; } } $ array zurückgeben; } öffentliche Funktion getupperAttribute () { return strtoupper ($ this-> title); } }

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3