如何為 Eloquent 模型新增自訂屬性?

Patricia Arquette
發布: 2024-10-30 03:38:02
原創
755 人瀏覽過

How Can I Add Custom Attributes to Eloquent Models?

為 Eloquent 模型添加自訂屬性

使用自訂屬性增強 Laravel/Eloquent 模型的能力對於增強模型表示至關重要。預設情況下,模型公開與其表列相對應的屬性。然而,在不查詢資料庫的情況下存取附加資料或計算通常是可取的。

載入模型時填入自訂屬性是一個挑戰。預設的 toArray() 方法排除不直接對應到表格列的存取器。要克服此限制:

Laravel 版本 >= 8:

使用帶有 getter 函數的 Attribute 類別。這允許定義與表列沒有直接關係的自訂屬性。

<code class="php">class EventSession extends Eloquent {
    ...
    public function availability()
    {
        return new Attribute(
            get: fn () => $this->calculateAvailability()
        );
    }
    ...
}</code>
登入後複製

Laravel versions

Laravel versions

8:有兩個選項:

<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>
登入後複製
選項1:明確屬性設定

重寫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;
    }
    ...
}</code>
登入後複製
選項 2:循環自訂存取器

迭代所有變異屬性並將它們應用於陣列表示。 透過利用這些技術,開發人員可以使用自訂屬性來增強 Eloquent 模型,豐富其表示並增強應用程式功能。

以上是如何為 Eloquent 模型新增自訂屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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