Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menambahkan Atribut Tersuai pada Laravel/Model Fasih pada Muatan?

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

Patricia Arquette
Patricia Arquetteasal
2024-11-04 05:41:29505semak imbas

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>

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>

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>

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!

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