Laravel 在保存到数据库之前转换日期格式
Laravel converting date format before saving in database
我正在使用 Laravel 突变器,这是我的日期格式在视图中的显示方式,
20/03/04
我想将其转换为
20-03-04
保存前的格式,
为了在一个专栏上做到这一点,我尝试在我的模型中使用以下代码,
public function setdobAttribute($input)
{
$d= date_create_from_format('d/m/Y',$input);
$this->attributes['dob'] = $d->format('Y-m-d');
}
它在一列上工作正常,但我想在多列上应用相同的功能,我该如何实现,我也试过了;
protected $casts = [
'dob' => 'date:Y-m-d',
'work_date' => 'datetime:Y-m-d H:00',
];
但它不起作用。
错误:发现意外数据。发现意外数据。数据缺失
public function setDateAttribute( $value ) {
$this->attributes['date'] = (new Carbon($value))->format('d/m/y');
}
setDateAttribute 始终采用 set[ColumnName]Attribute 格式,使用 CamelCase。 $this->attributes['date'] 部分中的日期还必须与 table.
中的实际列名匹配
当您在数据库中创建或更新记录时,上面的函数会自动更改格式。
注意:您可能需要在模型顶部添加 use Carbon\Carbon 语句才能使用 Carbon 库。
在这里查看其他示例。
更新
您可以选择使用以下方式为 date
列定义格式:
protected $dateFormat = 'Y-m-d';
我猜你可以覆盖 setAttribute
方法,例如:
public function setAttribute($key, $value){
if(in_array($key, 'abstract_keys')){
$this->attributes[$key] = !!$value;
}
else{
parent::setAttribute($key, $value);
}
}
getAttribute
也是如此。
如果你想把它作为一个函数
function changedateformat($origDate)
{
$date = str_replace('/', '-', $origDate );
$newDate = date("d-m-Y", strtotime($date));
return $newDate;
}
每当您需要转换时,使用 res = changedateformat($data);
调用函数
我正在使用 Laravel 突变器,这是我的日期格式在视图中的显示方式,
20/03/04
我想将其转换为
20-03-04
保存前的格式, 为了在一个专栏上做到这一点,我尝试在我的模型中使用以下代码,
public function setdobAttribute($input)
{
$d= date_create_from_format('d/m/Y',$input);
$this->attributes['dob'] = $d->format('Y-m-d');
}
它在一列上工作正常,但我想在多列上应用相同的功能,我该如何实现,我也试过了;
protected $casts = [
'dob' => 'date:Y-m-d',
'work_date' => 'datetime:Y-m-d H:00',
];
但它不起作用。 错误:发现意外数据。发现意外数据。数据缺失
public function setDateAttribute( $value ) {
$this->attributes['date'] = (new Carbon($value))->format('d/m/y');
}
setDateAttribute 始终采用 set[ColumnName]Attribute 格式,使用 CamelCase。 $this->attributes['date'] 部分中的日期还必须与 table.
中的实际列名匹配当您在数据库中创建或更新记录时,上面的函数会自动更改格式。
注意:您可能需要在模型顶部添加 use Carbon\Carbon 语句才能使用 Carbon 库。
在这里查看其他示例。
更新
您可以选择使用以下方式为 date
列定义格式:
protected $dateFormat = 'Y-m-d';
我猜你可以覆盖 setAttribute
方法,例如:
public function setAttribute($key, $value){
if(in_array($key, 'abstract_keys')){
$this->attributes[$key] = !!$value;
}
else{
parent::setAttribute($key, $value);
}
}
getAttribute
也是如此。
如果你想把它作为一个函数
function changedateformat($origDate)
{
$date = str_replace('/', '-', $origDate );
$newDate = date("d-m-Y", strtotime($date));
return $newDate;
}
每当您需要转换时,使用 res = changedateformat($data);