在對象加載時檢索Laravel 模型中的自定義屬性
問題:
您希望在模型載入時存取Laravel/Eloquent 模型上的自訂屬性/屬性,而不依賴手動循環。
解決方案:
Laravel 8 :
使用getter 函數將自訂屬性定義為屬性:
<code class="php">class EventSession extends Eloquent { public function availability() { return new Attribute( get: fn() => $this->calculateAvailability() ); } }</code>
Laravel 8-:
方法1: 將您的自訂屬性附加到$appends 陣列並建立對應的存取器:
<code class="php">class EventSession extends Eloquent { protected $appends = ['availability']; public function getAvailabilityAttribute() { return $this->calculateAvailability(); } }</code>
方法2: 重寫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() 中的變異屬性:
<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>
以上是如何在物件載入時檢索 Laravel 模型中的自訂屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!