2016-08-16 1 views
0

두 시작 및 끝 날짜와 함께 'whereBetween'eloqouent 쿼리를 사용하려고합니다.where 웅변적인 쿼리가 빈 출력을 반환 함

$first_day_this_month = date('Y-m-01 H:s:i'); //get the first day of the current month 
$yesterDay = date('Y-m-d H:s:i',strtotime("-1 days")); //get yesterday's date 

$d = m_chat_history::where('employee_id',$request->other_id) 
       ->whereNull('to_group')->where('to_employee_id',$request->id) 
       ->whereBetween('created_at',[$yesterDay,$first_day_this_month]) 
       ->get(); 

은 내가 '위해서 var_dump'에 의해 쿼리에 필요한 모든 데이터가 있는지 확인하고 그것은 나에게 쿼리에 필요한 모든 필요한 데이터를 제공 않았지만 쿼리 나에게 빈 출력을 반환합니다. 어떤 아이디어, 단서, 제안, 도움, 권장 사항을 알려주십시오. 'whereBetween'을 제거하려고했는데 쿼리가 제대로 작동하는 것처럼 예상 출력을 반환하지만 'whereBetween'을 사용하면 반환 출력이 비어 있습니다.

+0

MySQL의 날짜 시간 형식은 다음과 같습니다 날짜 ('내지 Ym-01 H : i : s '); 당신은 'H : s : i'대신 'H : i : s'를 썼습니다. – Sovon

+0

"작동하지 않는다"라고 말하지 말고 "출력 없음"이라고 말하지 마십시오. 그 차이는 사소한 것처럼 보일지 모르지만 두 번째 표현은 문법 오류가 없다는 신호입니다. – tadman

+0

@ Sovon은 'H : i : s'을 시도했지만 여전히 동일합니다. –

답변

2

whereBetween의 값을 정의 할 때 created_at과 동일한 유형 및 형식을 사용해야합니다.

또한
$first_day_this_month = date('Y-m-01 H:i:s'); 
$yesterday = date('Y-m-d H:i:s', strtotime("-1 day")); 

PARAMS의 순서의 확인이 (여전히 달의 첫째 날과 같은 날 경우를 고려하시기 바랍니다 : 당신이 날짜를 사용하는 것처럼 당신은 (그것을하는 많은 방법 중 하나)와 같은 에지 값을 정의 할 수 있습니다

->whereBetween('created_at', [$first_day_this_month, $yesterday]) 

편집 : 타임 스탬프되지 않은, 을이 시도 ...

+0

'created_at'열 유형이 'timestamp'입니다 –

+0

답변을 시도했지만 여전히 출력이 비어있는 것처럼 보입니다. –

+0

값의 순서를 변경 했습니까? 이건 중요하다. – dlondero

1

를하지만 먼저는 Carbon를 설치해야 당신이) 몇 가지 논리를 추가하고 조심해야 어디 $ 어제는 작은 것 작곡가와 함께.

use Carbon 

는 다음 fallowing 코드를

$yesterday = Carbon::yesterday()->toDateTimeString(); 
$carbon = new Carbon('first day of ' . date('F Y')); 
$first_day = $carbon->toDateTimeString(); 

를 작성하는 것이 수행 한 후 귀하의 질의에

->whereBetween('created_at', [$first_day, $yesterday]) 
관련 문제