使用 Carbon 进行 Laravel 查询
Using Carbon for Laravel queries
我如何使用 Carbon 在其帖子上输出 created_at
人类可读的查询,例如 Facebook 的 1 min ago
。问题是我总是return直接在浏览器中输出查询结果。我怎样才能整合它,而不是 2015-07-01 12:32:43
而是 1 min ago
或其他人类可读且漂亮的东西。
在我的控制器中:
$posts = DB::table('posts')
->where('author_id', '=', $id)
->where('created_at', '<', $date)
->orderBy('created_at', 'desc')
->paginate(10);
return $posts;
然后它将 return 所有帖子的 json 格式。
尝试:
foreach ($posts as &$post) {
$post->created_at = Carbon::parse($post->created_at)->diffForHumans();
}
之前 return
我建议您使用 Eloquent 模型及其附带的功能:
class Post extends Eloquent {
protected $appends = array('created_at_for_humans');
public function getCreatedAtForHumansAttribute(){
return Carbon::parse($this->attributes['created_at'])->diffForHumans();
}
}
此 attribute accessor returns 格式化日期,因为它已在 $appends
中注册,所以该属性将包含在 array/JSON 转换中。
您的查询看起来几乎相同:
$posts = Post::where('author_id', '=', $id)
->where('created_at', '<', $date)
->orderBy('created_at', 'desc')
->paginate(10);
我如何使用 Carbon 在其帖子上输出 created_at
人类可读的查询,例如 Facebook 的 1 min ago
。问题是我总是return直接在浏览器中输出查询结果。我怎样才能整合它,而不是 2015-07-01 12:32:43
而是 1 min ago
或其他人类可读且漂亮的东西。
在我的控制器中:
$posts = DB::table('posts')
->where('author_id', '=', $id)
->where('created_at', '<', $date)
->orderBy('created_at', 'desc')
->paginate(10);
return $posts;
然后它将 return 所有帖子的 json 格式。
尝试:
foreach ($posts as &$post) {
$post->created_at = Carbon::parse($post->created_at)->diffForHumans();
}
之前 return
我建议您使用 Eloquent 模型及其附带的功能:
class Post extends Eloquent {
protected $appends = array('created_at_for_humans');
public function getCreatedAtForHumansAttribute(){
return Carbon::parse($this->attributes['created_at'])->diffForHumans();
}
}
此 attribute accessor returns 格式化日期,因为它已在 $appends
中注册,所以该属性将包含在 array/JSON 转换中。
您的查询看起来几乎相同:
$posts = Post::where('author_id', '=', $id)
->where('created_at', '<', $date)
->orderBy('created_at', 'desc')
->paginate(10);