如何为 Eloquent 模型添加自定义属性?

Patricia Arquette
发布: 2024-10-30 03:38:02
原创
690 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!