2015-01-25 7 views
0
CakePHP는이 코드에 해당하는 무엇

33 베타

SELECT column_name(s) 
FROM table_name 
WHERE column_name BETWEEN value1 AND value2; 

나는이

$condition["Advertisements.created BETWEEN ? AND ?"] = [1418874212 , 1418889212]; 

하려고하지만 그것은 작동하지 않습니다

+1

가능한 중복 - ([CakePHP에서 3.0> 찾기 조건 사이] http://stackoverflow.com/questions/ 26430259/cakephp-3-0-between-find-condition) – ndm

답변

0
  $Query = $Table 
      ->find('all') 
      ->where([ 
       'date BETWEEN :start_date AND :end_date' 
      ]) 

      ->bind(':start_date ',$s_date) 
      ->bind(':end_date',$e_days); 

      $Query->hydrate(false); 
      $result = $Query->toArray(); 
+0

간단한 설명을 제공해 주시겠습니까? – PKirby

+1

마치 start_date와 end_date 인 두 날짜 사이의 모든 날짜를 찾으려면 요 조건이 다음과 같아야합니다. 'conditions'=> [ 'date BETWEEN start_date AND end_date'=> [ '2015-10-07' , '2015-10-20']] ..... 그 bind() 메소드는 열 이름에 대한 사용자 입력을 직접 전달하는 것이 안전하지 않기 때문에 데이터를 바인딩하는 데 사용될 수 있습니다. – RaJ

0

당신이 할 수있는 다음 두 가지 방법 중 하나를 사용하십시오.

방법 1 :

$start_date = '2015-11-01 00:00:00'; 
$end_date = '2015-11-01 23:59:59'; 
$query = $this->Advertisements->find('all') 
     ->where(function ($exp, $q) use($start_date,$end_date) { 
      return $exp->between('created', $start_date, $end_date); 
     }); 
$result = $query->toArray(); 

방법 2 :

$start_date = '2015-11-01 00:00:00'; 
$end_date = '2015-11-01 23:59:59'; 
$query = $this->Advertisements->find('all') 
     ->where([ 
      'created BETWEEN :start AND :end' 
     ]) 
     ->bind(':start', new \DateTime($start_date), 'datetime') 
     ->bind(':end', new \DateTime($end_date), 'datetime'); 
$result = $query->toArray();