Laravel 使用笔记之一 访问器

原始数据:

{
    "id": 1,
    "name": "AnYing",
    "c_at": "1970-01-01 08:00:01"
}

模型示例:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Member extends Model
{

    public function getNameAttribute($value)
    {
        return 'Hellow ' . $value;
    }
}

1、return 返回数据

Route::get('/',function(){
    return \App\Models\Member::query()->find(1);
});

结果

{
    "id": 1,
    "name": "Hellow AnYing",
    "c_at": "1970-01-01 08:00:01"
}

2、 dd 打印模型

Route::get('/',function(){
    dd(\App\Models\Member::query()->find(1));
});

结果

#attributes: array:3 ["id" => 1
    "name" => "AnYing"
    "c_at" => "1970-01-01 08:00:01"
  ]

3、dd 指定字段

Route::get('/',function(){
    dd(\App\Models\Member::query()->find(1)->name);
});

结果

"Hellow AnYing"

大家在使用的时候要注意returndd()的区别,不要觉得打印数据的时候没有看到自己使用修改器修改的字段就觉得自己写错了。

另外修改指定字段的时候有两种方式

//参数传值
public function getNameAttribute($value)
{
    return 'Hellow ' . $value;
}

或者

//使用$this->attributes
public function getNameAttribute()
{
    return 'Hellow ' . $this->attributes['name'];
}

添加新字段同样有两种方式,但是不可以使用传值方式。除了 $this->attributes 之外,还可以使用下面这种方式

public function getFullNameAttribute()
{
    return 'Hellow ' . $this->name;
}

如有错误,欢迎批评指正。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!