Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menambahkan Atribut Tersuai pada Laravel/Model Fasih pada Muatan?
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!