Dalam Laravel/Eloquent, atribut tersuai yang tidak berkaitan secara langsung dengan lajur dalam jadual asas dikecualikan apabila menukar model kepada format toArray() atau JSON.
Laravel 8 dan ke atas:
Gunakan Kelas atribut untuk mencipta aksesori tersuai yang mengira dan memberikan atribut secara automatik apabila objek dimuatkan.
<code class="php">class EventSession extends Eloquent { public function availability() { return new Attribute( get: fn () => $this->calculateAvailability() ); } }</code>
Laravel 7 dan ke bawah:
Pilihan 1 : Tambahkan Atribut pada $appends Property
Tambahkan atribut tersuai pada tatasusunan $appends dan tentukan pengakses yang sesuai.
<code class="php">class EventSession extends Eloquent { protected $appends = ['availability']; public function getAvailabilityAttribute() { return $this->calculateAvailability(); } }</code>
Pilihan 2: Override toArray() Kaedah
Timpa kaedah toArray() dan tetapkan atau ulangi secara eksplisit pada 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); } }</code>
Pilihan 3: Gelung Melalui Atribut Bermutasi
Gelung melalui atribut bermutasi model dan gunakannya pada tatasusunan 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 Menambah Atribut Tersuai pada Model Laravel/Eloquent pada Muatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!