如何在載入時為 Laravel/Eloquent 模型新增自訂屬性?

Barbara Streisand
發布: 2024-11-04 13:15:29
原創
445 人瀏覽過

How to Add a Custom Attribute to a Laravel/Eloquent Model on Load?

在加載時向Laravel/Eloquent 模型添加自訂屬性

問題分析

在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!