如何在物件載入時檢索 Laravel 模型中的自訂屬性?

Susan Sarandon
發布: 2024-10-29 12:43:29
原創
723 人瀏覽過

How to Retrieve Custom Attributes in Laravel Models on Object Load?

在對象加載時檢索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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板