Php Laravel 5:设置或获取数据库中的日期格式
我很难理解Laravel是如何处理日期和碳的。我有一个模型,它有一个名为published_at的特殊字段(它是da DATE字段)。我希望在保存对象的实例时,laravel使用碳元素转换该字段 这是我的模型:Php Laravel 5:设置或获取数据库中的日期格式,php,laravel,date,laravel-5,php-carbon,Php,Laravel,Date,Laravel 5,Php Carbon,我很难理解Laravel是如何处理日期和碳的。我有一个模型,它有一个名为published_at的特殊字段(它是da DATE字段)。我希望在保存对象的实例时,laravel使用碳元素转换该字段 这是我的模型: <?php namespace App; use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; class Addon extends Model { // ... protected $dates = [
<?php
namespace App;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
class Addon extends Model
{
// ...
protected $dates = [
'published_at'
];
// ....
/**
* Set the published_at date format
*
* @param $date
* @return string
*/
public function setPublishedAtAttribute($date)
{
$this->attributes['published_at'] = Carbon::createFromFormat('d/m/Y', $date);
}
// ....
}
我建议您不要乱搞这样的日期格式,而是创建这样的访问器
public function getFormattedPublishedAtAttribute() {
return $this->published_at->format('d/m/Y');
}
这样,您可以使用默认日期,也可以使用..单独获取格式化日期
$model->formattedPublishedAt;
您必须在碳指令中设置格式日期:
$this->attributes['published_at'] = Carbon::createFromFormat('d/m/Y', $date)->format('Y-m-d');
好的,在进一步挖掘之后,我做了以下工作:
public function getPublishedAtAttribute($date)
{
$date = new Carbon($date);
return $date->format('d/m/Y');
}
这是有效的。但是我不明白为什么我要做新碳($date)代码>以使其正常工作。如果不使用它,则会调用字符串上的成员函数format()
。(在上使用发布、在
上使用创建和在
上使用更新进行了尝试,所有这些都是一样的)
但是由于
上发布的是我的$dates=[]代码>数组,难道不应该自动将其视为碳实例吗?在处创建的和在
处更新的更是如此
但就我所知,它不是。如果我dd($addon->created_at)代码>它只是一个字符串,而不是一个carbon实例(如果我省略了$date=newcarbon($date);
) MySQL以“YYYY-MM-DD”格式检索并显示日期值。您可以在模型中创建一个getter,该getter返回您希望在视图中显示的格式的值?公共函数GetPublisheDataAttribute($date){return$date->format('d/m/Y');}因为对我来说,当你在
$model->PublishedU上执行时,我会在字符串上调用成员函数format()
,Laravel会检查是否有GetPublisheDataAttribute()
方法,如果有,则传递值。但是由于我们使用的是不同的名称,Laravel不知道我们需要哪个属性,这就是为什么我们必须使用return$this->published\u at->format()
指定它的原因。对不起,我错了。这是一个碳排放的例子。我仍然不明白为什么我必须在访问器中新建一个carbon实例,你不需要创建carbon实例。默认情况下,在创建的和在
更新的的Laravel中的日期是碳实例。如果您使用的是软删除,您意识到需要创建一个protected$dates=['deleted_at']代码>这是为了在
处为deleted\u创建一个碳实例。