【发布时间】:2014-04-17 09:28:10
【问题描述】:
如何使用all() 方法从数据库返回时间戳转换为日期(d-m-Y H:i) 的所有行?
这不是created_at 或updated_at 列,它是自定义属性,如果您愿意,可以将其称为birthday。
【问题讨论】:
标签: laravel laravel-4 eloquent
如何使用all() 方法从数据库返回时间戳转换为日期(d-m-Y H:i) 的所有行?
这不是created_at 或updated_at 列,它是自定义属性,如果您愿意,可以将其称为birthday。
【问题讨论】:
标签: laravel laravel-4 eloquent
像created_at 这样的时间戳列首先被解析。 U 只是时间戳格式。您可以返回自己的格式。其他格式见date docs。
编辑:正如我在评论中所述,getDateFormat() 是两种方式(插入、选择)。你最好的选择是在模型中使用格式。示例:
public function getMyBirthdayAttribute()
{
return $this->my_birthday->format('d.m.Y');
}
使用$model->my_birthday调用属性。
// controller
$posts = Post::all();
// within sometemplate.blade.php
@foreach($posts as $post)
my formatted date: {{ $post->my_birthday }}
@endforeach
【讨论】:
getDateFormat 用于插入和选择。如果我理解正确,您只需要一种从数据库格式化日期时间格式的简单方法。会相应地更新我的答案。
恕我直言,使用 Laravel 管理日期的更好方法是使用 Laravel 内置的 getDates 访问器。
你需要做的就是在你的模型上设置一个方法。
public function getDates()
{
return [
'my_birthday',
'created_at',
'updated_at',
];
}
这将返回一个Carbon 对象。碳在操纵日期方面非常棒。
这是 Laravel 默认对 created_at 和 updated_at 所做的。
然后您可以执行以下操作:
$my_birthday->diffForHumans() // 2 Days ago
$my_birthday->format('d.m.Y') // 20.02.1979
这里有很多帮手。查看 Carbon 文档:https://github.com/briannesbitt/Carbon
绝对值得学习。对于初学者来说可能并不容易理解。但是,我建议您看一下并了解它。它会改变你的生活 - 约会可能会很痛苦!
【讨论】:
在这种情况下,您需要转换query 中的日期,如果mysql 被用作您的数据库,那么您可以使用这样的原始查询:
// Assumed my_birthday is like 1255033470
$raw = DB::raw("date_format(from_unixtime(my_birthday),'%b %d, %Y %l:%i %p') as dob");
$result = Model::get(array('id', 'username', $raw));
你可以写在一行内:
$result = Model::get(array('id', 'username', DB::raw("...")));
【讨论】:
1255033470 之类的东西?
'my_birthday'更改为my_birthday。
只需将其放在您的代码上 $post 取决于你创建的内容
$post ->created_at->format('d.m.Y')
【讨论】: