<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* Get the user's first name.
*/
protected function firstName(): Attribute
{
return Attribute::make(
get: fn (string $value) => ucfirst($value),
);
}
}
使用:
use App\Models\User;
$user = User::find(1);
$firstName = $user->first_name;
定义
Accessor
使用:
文档:https://laravel.com/docs/10.x/eloquent-mutators#defining-an-accessor
谢谢 有用
larlvel 是支持写入与查询时自定义的
查询在model文件中定义:
public function getAvatarUriAttribute($value){
//取其它字段值用:$this->字段名
return '自定义前缀'.$value;
}
这样任意model查询时会自动调用方法转换字段值,
同理入库时自动转换就是setAvatarUriAttribute($value){}
或者你自定义一个查询字段
public function getAvatarUrlAttribute(){
//取其它字段值用:$this->字段名
return '自定义前缀'.$this->avatar_uri;
}
单条查询直接使用:$data->avarar_url 即可
列表查询在get()后面追加append
get()->append(['avatar_url']);
这样结果中有自定义字段了。
多谢大哥