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!