Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mendapatkan Atribut Tersuai dalam Model Laravel pada Beban Objek?

Bagaimana untuk Mendapatkan Atribut Tersuai dalam Model Laravel pada Beban Objek?

Susan Sarandon
Susan Sarandonasal
2024-10-29 12:43:29804semak imbas

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

Dapatkan Atribut Tersuai dalam Model Laravel pada Muatan Objek

Masalah:

Anda ingin akses atribut/sifat tersuai pada model Laravel/Eloquent apabila model dimuatkan, tanpa bergantung pada gelung manual.

Penyelesaian:

Laravel 8 :

Tentukan atribut tersuai anda sebagai Atribut dengan fungsi pengambil:

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

Laravel 8-:

Kaedah 1: Tambahkan atribut tersuai anda pada tatasusunan $appends dan buat pengakses yang sepadan:

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

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

Kaedah 2: Gantikan kaedah toArray() untuk memasukkan atribut anda secara eksplisit:

<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>

Kaedah 3: Lelaran melalui atribut bermutasi dalam 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>

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Atribut Tersuai dalam Model Laravel pada Beban Objek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn