2015-01-14 4 views
0

CGridView에서 날짜 범위를 사용하고 싶습니다.이 두 필드 from_date 및 to_date를 호출하고 모델에서 공용으로 작동하지만 코드가 작동하지만 문제는 from_date이고 to_date는 완벽하게 작동하지 않습니다. FROM_DATE 결과를 선택하는 것은 정확하지만 그것은 단지 TO_DATE있는 마지막 값을 취하고있다 TO_DATE 선택, 그래서 당신은보기에 모델yii CGridView 날짜 범위

public $from_date; 
public $to_date; 
//at Search() 
!empty($this->to_date) ? $criteria->addCondition('date <= "' . $this->to_date. '" ') : ""; 
!empty($this->from_date) ? $criteria->addCondition('date >= "' . $this->from_date . '" ') : ""; 

에서 나에게

도움을주십시오 수 있다면

$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'bank-grid', 
'dataProvider' => $model->search(), 
'afterAjaxUpdate' => "function() { jQuery('#from_date').datepicker({'dateFormat':'yy-mm-dd'}) , jQuery('#to_date').datepicker({'dateFormat':'yy-mm-dd'}) }", 
'filter' => $model,  
'ajaxUpdate' => true, 
'columns' => array(
'account', 
'name', 
array(
    'name' => 'date', 
    'filter' => $this->widget('zii.widgets.jui.CJuiDatePicker', array(
      'model'   => $model, 
      'attribute'  => 'from_date', 
      'options' => array('firstDay' => 6, 'dateFormat' => 'yy-mm-dd'), 
      'htmlOptions' => array('style' => 'width: 100px;' , 'placeHolder'=>'From:' , 'id'=>'from_date'), 
     ), true) . $this->widget('zii.widgets.jui.CJuiDatePicker', array(
      'model'   => $model, 
      'attribute'  => 'to_date', 
      'options' => array('firstDay' => 6, 'dateFormat' => 'yy-mm-dd'), 
      'htmlOptions' => array('style' => 'width: 100px;' , 'placeHolder'=>'To:', 'id'=>'to_date'), 
     ), true), 
), 
array(
     'class' => 'CButtonColumn', 
    ), 
), 
)); 

주의 사항 일부 대괄호 또는 열을 잊어 버린 경우 미안 일부 코드를 복사하므로

답변

0

이 방식으로 addCondtion()에 THIRD 매개 변수를 설정하려고하면 하나의 조건 만 사용됩니다.

$criteria->addCondition('t.id',$variable, 'AND'); // see 

하면 더 볼 수 있습니다 : http://www.yiiframework.com/doc/api/1.1/CDbCriteria#addCondition-detail

편집 : 시간에 대한

내가 당신의 상태는 SQL BETWEEN을 활용할 필요가 있다고 생각
$criteria=new CDbCriteria; 
$criteria->addCondition('from_date',$this->from_date,'AND'); 
$criteria->addCondition('to_date',$this->to_date,'AND'); 
+0

인 감사 , 날짜 범위에 대해 하나의 열을 사용하고 있습니다. 따라서 from_date 및 to_date를 사용하면 데이터베이스와의 일치가 없으므로 오류가 발생합니다. 그래서 열을 데이터를 사용하고 있습니다, 나는 또한 'AND'연산자를 추가했지만 솔루션이 없습니다 –

+0

왜 compare()를 사용하지 않습니까? –

+0

날짜가 같지 않은 날짜 범위가 필요하기 때문에 2014 년 12 월 1 일부터 2014 년 1 월 14 일까지 날짜를 표시해야합니다. –

0

...

$criteria->addBetweenCondition('attributeName', 'value1', 'value2');