Search code examples
yiiconditional-statementscriteriadataprovider

Yii dataprovider criteria for today's date


I want to display only the data in the dataprovider for today's date only. $data->timedate is the appointment date. If it is equal to the current date, display it. The following code does not work.

//today appointments dataprovider
        $taProvider=new CActiveDataProvider('Appointments',array(
                'sort'=>array(
                    'defaultOrder'=>'datetime ASC',
                    ),
                'criteria'=>array(
                        'condition'=>'cId=:cId',
                        'params'=>array(':cId'=>Yii::app()->user->id),
                        'condition'=>$data->timedate = date('Y-m-d'),


                    ),    
            ));

Solution

  • EDIT Modifiyed for using CDbcriteria object

    You are using the PHP variables within CDbCriteria->condition. CDbCriteria Condition is nothing but the where clause in your sql query http://www.yiiframework.com/doc/api/1.1/CDbCriteria#condition-detail Also your second assignment would overwrite the first if you need to add condition you need to use addCondition() method

    Change

     'criteria'=>array(
                            'condition'=>'cId=:cId',
                            'params'=>array(':cId'=>Yii::app()->user->id),
                            'condition'=>$data->timedate = date('Y-m-d'),
    
    
                        ),
    

    to

    'criteria'=>array(
            'condition'=>"DATE(t.timedate) = DATE(NOW()) AND cId=:cId ",
            'params'=>array(':cId'=>Yii::app()->user->id),
     ),