在Laravel/Eloquent 中,自訂屬性與模型不直接相關將模型轉換為toArray() 或JSON 格式時,基礎表中的欄位將被排除。
Laravel 8 及更高版本:
使用屬性類,用於建立自訂存取器,在物件載入時自動計算和分配屬性。
<code class="php">class EventSession extends Eloquent { public function availability() { return new Attribute( get: fn () => $this->calculateAvailability() ); } }</code>
Laravel 7 及以下版本:
選項1 : 將屬性追加到$appends 屬性
<code class="php">class EventSession extends Eloquent { protected $appends = ['availability']; public function getAvailabilityAttribute() { return $this->calculateAvailability(); } }</code>
選項 2:重寫 toArray()方法
重寫 toArray() 方法並明確設定或迭代自訂屬性。<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>
選項 3:循環遍歷變異屬性
循環模型的變異屬性並將它們應用到 toArray() 數組。以上是如何在載入時為 Laravel/Eloquent 模型新增自訂屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!