Bagaimanakah Saya Boleh Menambah Atribut Tersuai pada Model Fasih?

Patricia Arquette
Lepaskan: 2024-10-30 03:38:02
asal
690 orang telah melayarinya

How Can I Add Custom Attributes to Eloquent Models?

Menambahkan Atribut Tersuai pada Model Fasih

Keupayaan untuk menambah model Laravel/Eloquent dengan atribut tersuai adalah penting untuk mempertingkat perwakilan model. Secara lalai, model mendedahkan atribut yang sepadan dengan lajur jadualnya. Walau bagaimanapun, mengakses data atau pengiraan tambahan tanpa menanyakan pangkalan data selalunya diingini.

Satu cabaran terletak pada mengisi atribut tersuai apabila model dimuatkan. Kaedah lalai toArray() mengecualikan pengakses yang tidak memetakan terus ke lajur jadual. Untuk mengatasi had ini:

Versi Laravel >= 8:

Gunakan kelas Atribut dengan fungsi pengambil. Ini membenarkan mentakrifkan atribut tersuai tanpa kaitan langsung dengan lajur jadual.

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

Versi Laravel < 8:

Dua pilihan tersedia:

Pilihan 1: Tetapan Atribut Eksplisit

Timpa kaedah toArray() dan tetapkan secara manual atribut tersuai.

<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);
    }
    ...
}<p><strong>Pilihan 2: Gelung Melalui Pengakses Tersuai</strong></p>
<p>Lelar ke atas semua atribut bermutasi dan gunakannya pada perwakilan tatasusunan.</p>
<pre class="brush:php;toolbar:false"><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;
    }
    ...
}</code>
Salin selepas log masuk

Dengan menggunakan teknik ini, pembangun boleh menambah model Eloquent dengan atribut tersuai, memperkaya perwakilannya dan mempertingkatkan fungsi aplikasi.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menambah Atribut Tersuai pada Model Fasih?. 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!