2016-10-19 7 views
1

내 데이터베이스 (MySQL)에는 created_at에 대한 타임 스탬프 필드가 있습니다. 다음과 같이날짜 비교를위한 Laravel 5 쿼리 빌더 및 NOW()

나는 타임 스탬프를 가진 두 개의 항목을 가지고 :

  • 2017년 12월 12일 18시 25분 0초
  • 2016년 10월 2일 18시 0분 0초

오늘은 2016-10-19입니다 (나중에 참조 할 수 있음). 나는 다음과 같은 쿼리를 사용하는 경우, 나는 어떤 결과를 얻을 수 없습니다 :

$job = $jobs->where('closing_at', '>=', 'NOW()') 
      ->orderBy($sorter[0], $sorter[1])->paginate(24); 

내가 날짜를 하드 경우에, 나는 올바른 결과, 단지 하나의 미래 날짜를 얻을 :

$job = $jobs->where('closing_at', '>=', "2016-10-19 00:00:00") 
      ->orderBy($sorter[0], $sorter[1])->paginate(24); 

내 오류가 있으리라 믿고있어 Eloquent 쿼리 작성 도구를 사용하여 NOW()을 사용하고 있지만이 방법을 사용하는 올바른 방법을 알 수 없습니다.

+0

DB :: 원료 또는 whereRaw 도움이 될 것입니다 당신 https://laravel.com/docs/5.3/queries#raw-expressions – xAoc

+2

대신 NOW() \ Carbon :: now() –

+0

사용 날짜 ("Ymd H : i : s") 또는 \ Carbon :: now() –

답변

1

웅변 쿼리 빌더는 그 특정 SQL 함수를 허용하지 않습니다하지만 당신의 PHP 내에서 이루어집니다로 쉽게 큰 탄소 클래스 사용할 수 있습니다 http://carbon.nesbot.com/docs/ : 다음

use Carbon\Carbon;

그리고를

$job = $jobs->where('closing_at', '>=', Carbon::now()) 
     ->orderBy($sorter[0], $sorter[1])->paginate(24); 

그 트릭을해야합니다.

이 또한 whereDate() 웅변 방법 : https://laravel.com/docs/5.3/queries#where-clauses

+0

이 필요합니다. 엘로 쿼트 (Eloquent)가 기본 SQL 기능을 받아들이지 않는다는 것은 나에게 이해가 가지 않지만 작동한다. 덕분에 – TH1981

+0

DB : : object : https://laravel.com/docs/5.3/queries에서 작동하지만, 처음에는 "PHP에서 관리"하므로 모호한 표현이 아닙니다. – 2Fwebd