Bagaimana untuk Menambahkan Atribut Tersuai pada Laravel/Model Fasih pada Muatan?

Patricia Arquette
Lepaskan: 2024-11-04 05:41:29
asal
504 orang telah melayarinya

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

Atribut Tersuai dalam Model Laravel/Eloquent pada Muatan

Cabaran timbul apabila cuba menambah atribut tersuai pada model Eloquent apabila ia pada mulanya dimuatkan. Ini menghalang keperluan untuk populasi atribut manual menggunakan gelung. Walaupun peristiwa model telah diterokai, ia tidak membuahkan hasil yang diingini.

Penyelesaian

Isu asas berpunca daripada kaedah toArray() yang mengabaikan pengakses yang tidak sepadan secara langsung dengan pangkalan data lajur jadual. Walau bagaimanapun, Laravel menyediakan penyelesaian yang mudah:

Laravel >= 8.0

Perkenalkan kelas Atribut dengan fungsi pengambil untuk mengira atribut tersuai:

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

Laravel < 8.0 dan >= 4.08

Tambahkan atribut tersuai pada sifat $appends dan tentukan pengakses pengambil:

<code class="php">class EventSession extends Eloquent {
    protected $appends = ['availability'];
    public function getAvailabilityAttribute()
    {
        return $this->calculateAvailability();
    }
}</code>
Salin selepas log masuk

Laravel < 4.08

Timpa kaedah toArray() untuk menetapkan atribut atau gelung secara eksplisit melalui atribut bermutasi untuk mendapatkan semula nilainya:

<code class="php">class EventSession extends Eloquent {
    public function toArray()
    {
        $array = parent::toArray();
        $array['availability'] = $this->availability;
        return $array;
    }
}<p>atau</p>
<pre class="brush:php;toolbar:false"><code class="php">class EventSession extends Eloquent {
    public function toArray()
    {
        $array = parent::toArray();
        foreach ($this->getMutatedAttributes() as $key) {
            $array[$key] = $this->$key;
        }
        return $array;
    }
}</code>
Salin selepas log masuk

Dengan melaksanakan penyelesaian ini, atribut tersuai boleh ditambah dengan mudah pada model Eloquent apabila dimuatkan, menghapuskan keperluan untuk populasi atribut manual.

Atas ialah kandungan terperinci Bagaimana untuk Menambahkan Atribut Tersuai pada Laravel/Model Fasih pada Muatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!