Laravel5.8
  1. 安装配置及核心内容
  2. 框架基础
  3. 进阶知识
  4. 数据库相关
    1. Laravel - 数据库相关 - 简介与配置
    2. Laravel - 数据库相关 - 原生 SQL 操作
    3. Laravel - 数据库相关 - 查询构造器
    4. Laravel - 数据库相关 - 分页
    5. Laravel - 数据库相关 - 数据迁移
    6. Laravel - 数据库相关 - 数据填充
    7. Laravel - 数据库相关 - redis
    8. Laravel - Eloquent 模型 - 入门
    9. Laravel - Eloquent 模型 - 查询作用域(全局,本地,动态)
    10. Laravel - Eloquent 模型 - 事件与监听方法
    11. Laravel - Eloquent 模型 - 关联关系
    12. Laravel - Eloquent 模型 - 关联查询
    13. Laravel - Eloquent 模型 - 访问器和修改器

Laravel - Eloquent 模型 - 访问器和修改器

程序员日记      2019-09-10

定义访问器(get字段名Attribute())

访问器在访问字段的值时会根据访问器中设置的规则自动把值修改成指定格式的值。

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
    /**
     * 获取用户的名字
     */
    public function getFirstNameAttribute($value)
    {
        return ucfirst($value);
    }
}
<?php
$user = App\User::find(1);
$firstName = $user->first_name;

说明

要定义一个访问器,需要在模型中创建一个 getFooAttribute 方法,其中 Foo 是你想要访问的字段名。

上述例子会自动把first_name这个字段的值的首字母改为大写


定义修改器(set字段名Attribute())

修改器在设置字段的值会根据访问器中设置的规则自动把值修改成指定格式的值再写入数据库。

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
    /**
     * 设置用户的名字
     */
    public function setFirstNameAttribute($value)
    {
        $this->attributes['first_name'] = strtolower($value);
    }
}
<?php
$user = App\User::find(1);
$user->first_name = 'Sally';

说明

要定义一个修改器,需要在模型中创建一个 setFooAttribute 方法,其中 Foo 是你想要访问的字段名。

上述例子会自动把first_name这个字段的值的改成小写字母再存入数据库。