我有模特:
protected $casts = [
'date' => 'date',
];
laravel是否有能力设置强制转换格式,例如:
protected $casts = [
'date' => 'date_format:d/m/yyyy',
];
EDITED
我试过了:
模特:
protected $dateFormat = 'm/d/Y';
protected $dates = ['driver_expiration', 'created_at', 'updated_at', 'deleted_at'];
protected $casts = [
'driver_expiration' => 'date',
];
我将日期(driver_expiration)保存为'01 / 012016'但日期已保存。
laravel文档: https://laravel.com/docs/5.1/eloquent-mutators 告诉我们$ dateFormat仅适用于时间戳('created_at','updated_at','deleted_at')
答案 0 :(得分:21)
laravel 5.6 后,
您可以单独自定义Eloquent日期和日期时间转换的格式:
protected $casts = [
'birthday' => 'date:Y-m-d',
'joined_at' => 'datetime:Y-m-d H:00',
];
将模型序列化为数组或JSON数据时使用此格式
答案 1 :(得分:15)
您可以使用mutators来设置您喜欢的格式,而不是转换日期格式:
例如,如果您的列名为date
,则可以将以下函数添加到模型中:
public function setDateAttribute( $value ) {
$this->attributes['date'] = (new Carbon($value))->format('d/m/y');
}
使用CamelCase,setDateAttribute
始终采用set[ColumnName]Attribute
格式。 date
部分中的$this->attributes['date']
也必须与表格中的实际列名相匹配。
当您在数据库中create
或update
记录时,上述函数会自动更改格式。
注意:您可能需要将use Carbon\Carbon
语句添加到模型的顶部以使用Carbon库。
Take a look at other examples here
<强>更新强>
您可以选择使用以下方式定义date
列的格式:
protected $dateFormat = 'Y-m-d';
答案 2 :(得分:3)
只需添加到模型中:
public class HelloPojo implements RequestHandler<Map<String, String>, String>
这个Eloquent的方法最初返回一个Carbon实例,因此您可以获取该实例并调用其format()方法。如果您希望将此解决方案应用于所有模型,只需创建一个从Eloquent扩展的新类,并将此方法放在那里,这样您就可以从这个新类扩展模型。
答案 3 :(得分:1)
广播不受Collection对象的影响。它用于json和数组格式。如果您需要个人演员,可以使用
$user->date->format('m-d-Y');
答案 4 :(得分:0)
我创建了新的模型属性:
protected $datesConvert = ['driver_expiration'];
然后我更新了我的基本模型,如:
public function save(array $options = [])
{
if(isset($this->datesConvert)){
foreach($this->datesConvert as $date){
$this->attributes[$date] = \Carbon\Carbon::createFromFormat('d/m/Y', $this->attributes[$date])->format('Y-m-d');
}
}
parent::save($options);
}
public function getAttribute($key)
{
$value = parent::getAttribute($key);
if(isset($this->attributes[$key])){
if(isset($this->datesConvert) && in_array($key, $this->datesConvert)){
$value = \Carbon\Carbon::createFromFormat('Y-m-d', $value)->format('d/m/Y');
}
}
return $value;
}
这个解决方案适合我。代码可以移动到特征。格式可以放在$ datesConvert格式='d / m / Y';