Laravel中的优雅访问器和修改器

laravel中的优雅访问器和修改器

在本文中,我们将介绍 Laravel Web 框架中 Eloquent ORM 的修改器和访问器。介绍完毕后,我们将通过一些示例来理解这些概念。

在 Laravel 中,修改器和访问器允许您在将数据保存到数据库或从数据库中获取数据之前更改数据。具体来说,变异器允许您在将数据保存到数据库之前更改数据。另一方面,访问器允许您在从数据库获取数据后更改数据。

事实上,Laravel 模型是您可以创建修改器和访问器方法的中心位置。当然,将所有修改放在一个地方而不是分散在不同的地方是件好事。

在模型类中创建访问器和修改器

既然您现在已经熟悉了修改器和访问器的基本概念,我们将继续开发一个实际示例来演示它。

我假设您了解 Laravel 中的 Eloquent 模型,我们将使用 Post 模型作为示例的起点。如果您还没有创建 Post 模型,让我们使用 artisan 命令来创建它。

php artisan make:model Post --migration

登录后复制

这应该在 app/Post.php 中创建一个模型文件,如下所示。

<?php namespace App; use IlluminateDatabaseEloquentModel; class Post extends Model{    //}

登录后复制

让我们用以下内容替换该文件的内容。

 ucfirst($value),            set: fn ($value) => strtolower($value),        );    }}

登录后复制

由于我们使用了 –migration 选项,它还应该创建关联的数据库迁移。以防万一您不知道,您可以运行以下命令,以便它实际在数据库中创建表。

php artisan migrate

登录后复制

为了运行本文中的示例,您需要在 post 表中创建 name 列。无论如何,我们不会详细讨论迁移的细节,因为这超出了本文的范围。

Mutator 方法

首先,我们来看看 mutator 方法。

protected function name(): Attribute{    return Attribute::make(        #get: fn ($value) => ucfirst($value),        set: fn ($value) => strtolower($value),    );}

登录后复制

正如我们之前讨论的,修改器用于在将数据保存到数据库之前更改数据。如您所见,mutator 方法的语法为 {attribute-name}。当然,您需要将 {attribute-name} 替换为驼峰大小写的实际属性名称。需要注意的是,所有访问器和修改器方法都会返回一个 Attribute 实例,该实例定义如何访问和修改属性。

在属性上调用 mutator 方法时,将使用 set 参数。为了简单起见,我们只使用了 strtolower 函数,该函数在将帖子标题保存到数据库之前将其转换为小写。

通过这种方式,您可以在表的所有列上创建变异方法。接下来,我们来看看访问器方法。

访问器方法

如果在将数据保存到数据库之前使用变元来更改数据,则访问器方法用于在从数据库获取数据后更改数据。要定义访问器方法,您需要在定义属性时提供 get 参数。

让我们看一下访问器方法。

protected function name(): Attribute{    return Attribute::make(        get: fn ($value) => ucfirst($value),        #set: fn ($value) => strtolower($value),    );}

登录后复制

从数据库获取 name 属性的值后,将调用 get 参数。在我们的例子中,我们刚刚使用 ucfirst 方法来更改帖子标题。

到目前为止,我们刚刚创建了赋值器和访问器方法,但我们将在接下来的部分中测试它们。

变异器的作用

让我们在 app/Http/Controllers/MutatorController.php 创建一个控制器,以便我们可以测试我们在前面部分中创建的 mutator 方法。

name = 'Post Title';        $post->save();    }}

登录后复制

此外,您还需要在 routes/web.php 文件中创建关联的路由才能访问 mutator 控制器。

Route::get('mutator/index', 'MutatorController@index');

登录后复制

在 index 方法中,我们使用 Post 模型创建一个新帖子。它应该将 name 列的值设置为 post title 值,因为我们在相应的 mutator 方法中使用了 strtolower 函数。

操作中的访问器

要查看操作中的访问器,让我们继续创建一个包含以下内容的控制器文件 app/Http/Controllers/AccessorController.php

name;        exit;    }}

登录后复制

同样,您需要在 routes/web.php 文件中使用关联的路由来访问访问器控制器。

Route::get('accessor/index', 'AccessorController@index');

登录后复制

在 index 方法中,我们首先使用 Post 模型来加载示例帖子。

接下来,我们检查 name 列的值,它应该以大写字母开头,因为我们已经为该列定义了访问器方法。

这就是 Eloquent 变异器和访问器的工作原理!

结论

今天,我们探讨了 Laravel 中 Eloquent ORM 的修改器和访问器的概念。它提供了一种在将数据保存到数据库和从数据库中提取数据之前更改数据的好方法。

对于那些刚刚开始使用 Laravel 或希望通过扩展来扩展您的知识、网站或应用程序的人,我们在 Envato Market 上提供了多种可供您学习的内容。

以上就是Laravel中的优雅访问器和修改器的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1702853.html

(0)
上一篇 2025年2月19日 14:59:10
下一篇 2025年2月19日 14:59:30

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • LAMP环境下PHP代码如何优化

    提升LAMP架构下PHP应用的性能,是每个开发者都追求的目标。本文将介绍一系列行之有效的PHP代码优化策略,助您打造高效、稳定的网站。 一、基础优化: 升级PHP版本: 新版PHP通常包含性能提升和安全补丁,建议及时更新。 启用OPcach…

    2025年3月28日
    100
  • Python数据库操作:必须使用ORM吗?

    Python数据库操作:ORM并非唯一选择 许多Python开发者习惯使用ORM(对象关系映射)工具,例如SQLAlchemy,来操作数据库。 但一个常见问题是:是否必须为每个数据库表都创建对应的ORM映射?尤其面对大量表时,这种方法显得冗…

    2025年3月28日
    100
  • 多抖音账号私信管理怎么设置?私信管理有影响吗?

    在短视频风靡的时代,抖音已成为众多创作者的聚集地。对于拥有多个抖音账号的创作者来说,高效管理私信尤为重要,但传统方式往往耗时且低效。php小编小新将为您介绍一种使用PHP和Laravel框架开发的多抖音私信管理系统的解决方案。本系统提供多账…

    2025年3月14日
    200
  • laravel用户登录功能

    Laravel 提供了一个全面的 Auth 框架,用于实现用户登录功能,包括:定义用户模型(Eloquent 模型)创建登录表单(Blade 模板引擎)编写登录控制器(继承 AuthLoginController)验证登录请求(Auth::…

    2025年3月13日
    200
  • laravel入门实例

    Laravel 是一款 PHP 框架,用于轻松构建 Web 应用程序。它提供一系列强大的功能,包括:安装: 使用 Composer 全局安装 Laravel CLI,并在项目目录中创建应用程序。路由: 在 routes/web.php 中定…

    2025年3月13日
    200
  • laravel5.8中文文档

    Laravel 5.8 中文文档提供有关框架核心概念、功能和最佳实践的全面且深入的指南,包括基础知识、Web 开发、队列和调度、测试以及部署。文档提供具体示例,及时更新,易于使用,可通过官方网站访问。 Laravel 5.8 中文文档 La…

    2025年3月13日
    200
  • laravel安装代码

    要安装 Laravel,需依序进行以下步骤:安装 Composer(适用于 macOS/Linux 和 Windows)安装 Laravel 安装器创建新项目启动服务访问应用程序(网址:http://127.0.0.1:8000)设置数据库…

    2025年3月13日
    200
  • laravel5源码分析

    Laravel 5 深入分析揭示了其强大的架构和核心组件:MVC 设计模式、路由、依赖注入、事件、队列和验证。通过分析代码,开发者可以深入了解框架的实现,包括路由定义、控制器处理、模型交互、视图呈现、依赖关系管理、事件系统、异步任务和数据验…

    2025年3月13日
    200
  • laravel8 的优化点

    Laravel 8 针对性能优化提供了以下选项:缓存配置:使用 Redis 缓存驱动、缓存门面、缓存视图和页面片段。数据库优化:建立索引、使用查询范围、使用 Eloquent 关系。JavaScript 和 CSS 优化:使用版本控制、合并…

    2025年3月13日
    200
  • iaravel 如何学习

    学习 Laravel 的步骤有:具备 PHP 基础知识。安装 Laravel 框架。了解 Laravel 架构。学习基本语法:路由、控制器、视图、模型。构建小型应用练习框架使用。参阅官方文档获取详细指引。加入社区交流心得、寻求帮助。保持更新…

    2025年3月13日
    200

发表回复

登录后才能评论