Использование Carbon для запросов Laravel

как я могу использовать углерод для вывода created_at удобочитаемые запросы, такие как Facebook 1 min ago на его сообщения. Проблема в том, что я всегда возвращаю результаты запроса напрямую в браузер. Как я могу интегрировать это так вместо 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;

Затем он вернет JSON-формат всех сообщений.

1

Решение

Я рекомендую вам использовать модель Eloquent и функции, которые поставляются с ней:

class Post extends Eloquent {
protected $appends = array('created_at_for_humans');

public function getCreatedAtForHumansAttribute(){
return Carbon::parse($this->attributes['created_at'])->diffForHumans();
}
}

это атрибут доступа возвращает отформатированную дату и потому что она зарегистрирована в $appends атрибут будет включен для преобразования массива / JSON.

И ваш запрос будет выглядеть примерно так же:

$posts = Post::where('author_id', '=', $id)
->where('created_at', '<', $date)
->orderBy('created_at', 'desc')
->paginate(10);
2

Другие решения

Пытаться:

foreach ($posts as &$post) {
$post->created_at = Carbon::parse($post->created_at)->diffForHumans();
}

до return

1

По вопросам рекламы [email protected]