eloquent 查询 laravel 后更改日期格式
Change date format after eloquent query laravel
执行此查询后:
public function qryRecords($id)
{
$records = Record::with('place.country', 'place.city', 'place.organisation', 'framework', 'academy_year', 'status', 'type', 'student')
->where('student_id', '=', $id)
->get();
return response()->json($records);
}
我想更改 academy_year 的日期格式,这是它在我的数据库中的保存方式:
[
'start_date' => '2015-09-01',
'created_at' => now(),
'end_date' => '2016-06-30',
'is_archived' => true
],
现在在我的模型中,我这样做是为了获取数据表中的日期:
{
data: null,
render: function (data) {
return data.academy_year.start_date + ' <i class="fas fa-arrow-right"></i> <br> ' + data.academy_year.end_date;
}
},
我知道 Carbon 方法,但我不确定如何在我的情况下使用它。
如果 Carbon 可行,我很想听听,还有我可以使用的其他方法。
有两种方法可以做到这一点,第二个选项与第一个选项层:
- 在您的模型中使用日期修改器(https://laravel.com/docs/7.x/eloquent-mutators#date-mutators)
记录模型:
protected $dates = [
'start_date',
'end_date'
];
然后,如果您想将日期用于您的自定义格式,请执行以下操作:
$record->start_date->format('d-m-Y');//Customize format as you want.
如果以后不需要更改格式,只需要使用几次,我会使用此选项。
- 使用访问器(https://laravel.com/docs/7.x/eloquent-mutators#defining-an-accessor):(与答案 1 结合使用)
记录模型:
function getFormattedStartDateAttribute()
{
return $this->start_date->format('d-m-Y');
}
当你想要格式化日期时,你可以这样做:
$record->formatted_start_date;
我更喜欢第二个选项,因为那样你必须定义一次输出格式,然后每次你想要 'front-end-format'
时使用 $record->formatted_start_date
让我知道它是否适合你:)
如果您对附加库没问题,可以尝试 Moment.js。
例如:
{
data: null,
render: function (data) {
var formatted_start_date = moment(data.academy_year.start_date).format('dd.mm.yyyy')
var formatted_end_date = moment(data.academy_year.end_date).format('dd.mm.yyyy')
return formatted_start_date + ' <i class="fas fa-arrow-right"></i> <br> ' + formatted_end_date;
}
},
如果您想要不同的格式,请参阅格式文档。
https://momentjs.com/docs/#/displaying/format/
在 laravel 中,他们有资源来格式化 JSON 数据。你可以用它来修改你的日期格式
执行此查询后:
public function qryRecords($id)
{
$records = Record::with('place.country', 'place.city', 'place.organisation', 'framework', 'academy_year', 'status', 'type', 'student')
->where('student_id', '=', $id)
->get();
return response()->json($records);
}
我想更改 academy_year 的日期格式,这是它在我的数据库中的保存方式:
[
'start_date' => '2015-09-01',
'created_at' => now(),
'end_date' => '2016-06-30',
'is_archived' => true
],
现在在我的模型中,我这样做是为了获取数据表中的日期:
{
data: null,
render: function (data) {
return data.academy_year.start_date + ' <i class="fas fa-arrow-right"></i> <br> ' + data.academy_year.end_date;
}
},
我知道 Carbon 方法,但我不确定如何在我的情况下使用它。 如果 Carbon 可行,我很想听听,还有我可以使用的其他方法。
有两种方法可以做到这一点,第二个选项与第一个选项层:
- 在您的模型中使用日期修改器(https://laravel.com/docs/7.x/eloquent-mutators#date-mutators)
记录模型:
protected $dates = [
'start_date',
'end_date'
];
然后,如果您想将日期用于您的自定义格式,请执行以下操作:
$record->start_date->format('d-m-Y');//Customize format as you want.
如果以后不需要更改格式,只需要使用几次,我会使用此选项。
- 使用访问器(https://laravel.com/docs/7.x/eloquent-mutators#defining-an-accessor):(与答案 1 结合使用)
记录模型:
function getFormattedStartDateAttribute()
{
return $this->start_date->format('d-m-Y');
}
当你想要格式化日期时,你可以这样做:
$record->formatted_start_date;
我更喜欢第二个选项,因为那样你必须定义一次输出格式,然后每次你想要 'front-end-format'
时使用 $record->formatted_start_date让我知道它是否适合你:)
如果您对附加库没问题,可以尝试 Moment.js。
例如:
{
data: null,
render: function (data) {
var formatted_start_date = moment(data.academy_year.start_date).format('dd.mm.yyyy')
var formatted_end_date = moment(data.academy_year.end_date).format('dd.mm.yyyy')
return formatted_start_date + ' <i class="fas fa-arrow-right"></i> <br> ' + formatted_end_date;
}
},
如果您想要不同的格式,请参阅格式文档。 https://momentjs.com/docs/#/displaying/format/
在 laravel 中,他们有资源来格式化 JSON 数据。你可以用它来修改你的日期格式