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"
大家在使用的时候要注意return
和dd()
的区别,不要觉得打印数据的时候没有看到自己使用修改器修改的字段就觉得自己写错了。
另外修改指定字段的时候有两种方式
//参数传值
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 协议》,转载必须注明作者和本文链接