Eloquent 提供了很多属性,通过对模型进行约定,可以实现很多很方便的功能。
connection
1 2 3 4 5 6
|
protected $connection = 'connection-name';
|
table
1 2 3 4 5 6
|
protected $table = 'users';
|
primaryKey
1 2 3 4 5 6
|
protected $primaryKey = 'user_id';
|
通常主键不是id
时,可以使用该属性指定属性。
incrementing
Eloquent 假设主键是一个自增的整数值,这意味着默认情况下主键会自动转换为 int 类型。
如果希望使用非递增或非数字的主键则需要设置公共的 $incrementing
属性设置为 false:
1 2 3 4 5 6
|
public $incrementing = false;
|
keyType
如果你的主键不是一个整数,你需要将模型上受保护的 $keyType
属性设置为 string:
1 2 3 4 5 6
|
protected $keyType = 'string';
|
timestamps
默认情况下,Eloquent 预期你的数据表中存在created_at
和updated_at
字段,如果不想让 Eloquent 自动管理这两个列, 请将模型中的 $timestamps 属性设置为 false:
1 2 3 4 5 6
|
public $timestamps = false;
|
CREATED_AT|UPDATED_AT
1 2 3
| const CREATED_AT = 'start_time'; const UPDATED_AT = 'end_time';
|
如果需要自定义时间戳的格式,在你的模型中设置 $dateFormat 属性。这个属性决定日期属性在数据库的存储方式,以及模型序列化为数组或者 JSON 的格式:
1 2 3 4 5 6
|
protected $dateFormat = 'U';
|
不清楚 U 是什么意思的,请看 Date/Time 函数 。
attributes
1 2 3 4 5 6 7 8
|
protected $attributes = [ 'delayed' => false, ];
|
hidden
1 2 3 4 5 6
|
protected $hidden = ['password'];
|
visible
1 2 3 4 5 6
|
protected $visible = ['first_name', 'last_name'];
|
如果说$hidden
属性是黑名单,那么$visible
就是白名单。
appends
1 2 3 4 5 6 7 8
|
protected $appends = [ "type_mean" ];
|
appends
属性,通常会配合Accessors 一起使用。
fillable
1 2 3 4 5 6
|
protected $fillable = ["username"];
|
guarded
1 2 3 4 5 6
|
protected $guarded = ['price'];
|
casts
casts
属性很有用,可以使得从数据库中获取的数据,可以自动转换成我们期望的类型。
1 2 3 4 5 6 7 8 9 10 11
|
protected $casts = [ "settings" => "array", 'created_at' => 'datetime:Y-m-d H:i:s', 'updated_at' => 'datetime:Y-m-d H:i:s', 'is_admin' => 'boolean', ];
|
可能的属性转换列类型:
|类型|描述|
|-|-|
|int|
integer|通过 PHP 转换(int)|
|real|
float|
double|通过 PHP 转换(float)|
|string|通过 PHP 转换(string)|
|bool|
boolean|通过 PHP 转换(bool)|
|object|作为一个stdClass 对象,从JSON 解析或被解析为JSON|
|array|作为一个数组,从JSON 解析或被解析为JSON|
|collection|作为一个集合,从JSON 解析或被解析为JSON|
|date|
datetime|从数据库DATATIME 解析为Carbon 类型,然后返回|
|timestamp|数数据库TIMESTAMP 解析为Carbon 类型,然后返回|
dates
1 2 3 4 5 6
|
protected $dates = ['deleted_at'];
|
设置dates
的属性,默认是一个Carbon 对象。
perPage
1 2 3 4 5 6
| /** * 自定义每页显示数量(默认为15条) * * @var int */ protected $perPage = 50;
|
touches
1 2 3 4 5 6
|
protected $touches = ['post'];
|
dispatchesEvents
1 2 3 4 5 6 7 8 9
|
protected $dispatchesEvents = [ 'saved' => UserSaved::class, 'deleted' => UserDeleted::class, ];
|
with
为关联模型默认添加『渴求式加载』,等效于使用查询构造器时,手动指定with
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class User {
protected $with = [ "topics", ];
public function topics() { return $this->hasMany(Topic::class); } }
|
参考链接