2013-06-12 7 views
3

나는 Laravel 4에서 내 웹 사이트를 만들고 있는데 테이블에 created_at & updated_at 필드가 있습니다. 나는 게시물이 만들어진 이후 얼마나 많은 시간이 지 났는지 알려주는 뉴스 시스템을 만들고 싶다.게시 방법 (시간), laravel 4

-created 분 전

-created 4 개월 전

게시물 인 경우 나이가 1 개월 이상

:

| name | text |  created_at  |  updated_at  | 
| __________ | __________ | ________________________ | ___________________ | 
| news name | news_text | 2013-06-12 11:53:25 | 2013-06-12 11:53:25 | 

내가 좋아하는 뭔가를 보여주고 싶은

-created at Nov 5 2012

+2

쿨 이야기를. 지금까지 뭐 했니? – Jessica

답변

11

Carbon을 사용해보세요. Laravel은 이미 의존성으로 제공되므로 추가 할 필요가 없습니다.

use Carbon\Carbon; 

// ... 

// If more than a month has passed, use the formatted date string 
if ($new->created_at->diffInDays() > 30) { 
    $timestamp = 'Created at ' . $new->created_at->toFormattedDateString(); 

// Else get the difference for humans 
} else { 
    $timestamp = 'Created ' $new->created_at->diffForHumans(); 
} 
요청으로

, 나는 그것을 할 수있는 더 좋은 방법이 될 것이라고 생각 방법에 대한 통합의 예를 줄 것이다. 먼저 여러 다른 장소, 여러보기에서이 코드를 사용할 수 있다고 가정합니다. 따라서 코드가 모델 내부에있는 것이 가장 좋으므로 번거 로움없이 어디에서나 편리하게 호출 할 수 있습니다.

class News extends Eloquent { 

    public $timestamps = true; 

    // ... 

    public function formattedCreatedDate() { 
     ìf ($this->created_at->diffInDays() > 30) { 
      return 'Created at ' . $this->created_at->toFormattedDateString(); 
     } else { 
      return 'Created ' . $this->created_at->diffForHumans(); 
     } 
    } 

} 

그런 다음보기 파일에, 당신은 단순히 $news->formattedCreatedDate()을 Post.php을 할 것입니다. 예 :

<div class="post"> 
    <h1 class="title">{{ $news->title }}</h1> 
    <span class="date">{{ $news->forammatedCreatedDate() }}</span> 
    <p class="content">{{ $news->content }}</p> 
</div> 
+0

이 답변을보기 수준에 통합하는 방법을 나타 내기 위해 더 자세히 설명 할 수 있습니까? –

+0

당신의 소망은 나의 명령입니다. – rmobis

+0

나를 위해 일했습니다. 감사합니다. – Foxinni

4

는 탄소 필요 :

use Carbon\Carbon; 

그리고 사용은 :

$user = User::find(2); 

echo $user->created_at->diffForHumans(Carbon::now()); 

이를 얻어야한다 :

19 days before 
+0

'Carbon :: now()'를 전달해야한다고 생각하지 않습니다. –