2016-07-08 4 views
0
select * from user where HOUR(NOW()) BETWEEN earliest_login AND latest_login 

earliest_login, latest_login은 2 개의 열입니다. 나를 내가 시도 cakephp3에cakephp에 대한 절 사이 3

코드를이 쓸 수있는 방법을 알려주세요

이다 : 그것은 작동하지 않습니다

$query->where(
    [ 
     function($exp) { 
      return $exp->between('HOUR(NOW())', 'earliest_login', 'latest_login'); 
     } 

.

누군가 해결책이 있는지 알려주십시오.

+0

를 참조하십시오? – M4R1KU

+0

예 쿼리 개체에서 올바르게 실행되지 않습니다. 매개 변수 유형은 earliest_login이고 latest_login은 null입니다. –

+1

duplicat 질문 http://stackoverflow.com/questions/26430259/cakephp-3-0-between-find-condition –

답변

2

필드 이름은 표현식에 사용되며 SQL 스 니펫에는 신뢰할 수없는 콘텐츠가 없어야합니다.

당신은 사용할 수 있습니다

$query = $users->find() 
->where(function ($exp, $q) { 
    return $exp->between('Users.created', date1, date2); 
}) 

이가 비슷한 같은 SQL을 생성합니다 :

select * from users WHERE created BETWEEN '$date1' AND '$date2' 

또한 쿼리에있다()와 LT()를 사용할 수

$query = $articles->find() 
    ->where(function ($exp) { 
    return $exp 
     ->gt('created', '2016-07-05 12:02:15') 
     ->lt('created', '2016-07-10 12:02:15'); 
}); 

와 두 날짜 더 inforamation를 들어

$query = $this->Users->find(); 

$diff= $query->func()->dateDiff(['2016-07-04 12:02:15', '2016-07-07 18:29:57']); 

$query->select(['difference' => $diff,]); 

사이 differece을하려는 경우 오류가 발생 함이 링크 http://book.cakephp.org/3.0/en/orm/query-builder.html

+0

예가 OP가 보여주는 것과 다른 경우를 해결하고 있습니다. – ndm