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 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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