1

Carbon を使用して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 形式を返します。

4

2 に答える 2

2

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);
于 2015-01-07T09:34:52.343 に答える
1

試す:

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

return

于 2015-01-07T04:56:00.557 に答える