fic*_*489 13 casting date laravel laravel-5
我有模特:
protected $casts = [
'date' => 'date',
];
Run Code Online (Sandbox Code Playgroud)
laravel是否具有设置强制转换格式的能力,例如:
protected $casts = [
'date' => 'date_format:d/m/yyyy',
];
Run Code Online (Sandbox Code Playgroud)
?
EDITED
我试过这个:
在模型中:
protected $dateFormat = 'm/d/Y';
protected $dates = ['driver_expiration', 'created_at', 'updated_at', 'deleted_at'];
protected $casts = [
'driver_expiration' => 'date',
];
Run Code Online (Sandbox Code Playgroud)
我将日期(driver_expiration)保存为'01/012016'但日期已保存.
laravel文档:https://laravel.com/docs/5.1/eloquent-mutators 告诉我们$ dateFormat仅适用于时间戳('created_at','updated_at','deleted_at')
Hem*_*ela 27
在laravel 5.6之后,
您可以单独自定义Eloquent日期和日期时间转换的格式:
protected $casts = [
'birthday' => 'date:Y-m-d',
'joined_at' => 'datetime:Y-m-d H:00',
];
Run Code Online (Sandbox Code Playgroud)
将模型序列化为数组或JSON数据时使用此格式
Nir*_*hah 24
您可以使用mutators来设置您喜欢的格式,而不是转换日期格式:
例如,如果调用了列,则date可以将以下函数添加到模型中:
public function setDateAttribute( $value ) {
$this->attributes['date'] = (new Carbon($value))->format('d/m/y');
}
Run Code Online (Sandbox Code Playgroud)
在setDateAttribute总是在格式set[ColumnName]Attribute,使用驼峰.将date在$this->attributes['date']部分也必须在该表符合您实际的列名.
当您create或update数据库中的记录时,上述功能将自动更改格式.
注意:您可能需要将use Carbon\Carbon语句添加到模型的顶部以使用Carbon库.
UPDATE
(可选)您可以date使用以下内容定义列的格式:
protected $dateFormat = 'Y-m-d';
Run Code Online (Sandbox Code Playgroud)
小智 5
只需添加到模型中:
protected function asDateTime($value)
{
return parent::asDateTime($value)->format('d/m/y');
}
Run Code Online (Sandbox Code Playgroud)
这个 Eloquent 的方法最初返回一个 Carbon 实例,因此您可以获取该实例并调用它的 format() 方法。如果您希望将此解决方案应用于所有模型,只需创建一个从 Eloquent 扩展的新类,并将此方法放在那里,这样您就可以从这个新类扩展模型。
| 归档时间: |
|
| 查看次数: |
34218 次 |
| 最近记录: |