addBetweenCondition

hi, here’s a part of my query builder




 AND (wcv.DateCreated BETWEEN DATE_ADD(NOW(),INTERVAL -3 DAY) AND NOW())")



now my question is, am trying to use AR now instead, so how to convert that in addBetweenCondition() ?




'addBetweenCondition' => array(),



anyone ?

I tried




'addBetweenCondition' => array('DateCreated',DATE_ADD(NOW(),INTERVAL -1 DAY),NOW(),'AND'),



am getting an IDE error saying , ‘unexpected DAY’ …why ?

ok the manual said it’s supposed to be a string , what should i do with that,?

i need that function date_add

try to make your query in condition.




$this->getDbCriteria()->mergeWith(array(

			'condition' => 'wcv.DateCreated BETWEEN DATE_ADD(NOW(),INTERVAL -3 DAY) AND NOW())'

		));



You need to use PHP functions, not SQL functions!

If you want to use SQL, then go with R.K.'s solution. :)

for better performance it is better to use php functions to calculate dates then to use mysql function, in your case.

ok

this is the supposed to be query of mine




                            $dataProvider = new CActiveDataProvider('Wsrecruitcvhead',array(

                                'criteria' => array(

                                  'select' => 'ResumeID, ResumeTitle, ResumeSummaryIntroduction',

                                    'addSearchCondition' => array('ResumeTitle', $resumetitle),

                                    'addSearchCondition' => array('ResumeSummaryIntroduction', $resumesummaryintroduction),

                                    'addSearchCondition' => array('SummaryOfSkills', $summaryofskills),

                                    'with' => array(

                                      'wsrecruittimes' => array(

                                          'on' => 'wsrecruittimes.ResumeID=wsrecruitcvhead.ResumeID',

                                          'joinType' => 'INNER JOIN',

                                          'addSearchCondition' => array('AvailableToWorkSunday', $sun),

                                          'addSearchCondition' => array('AvailableToWorkMonday', $mon),

                                          'addSearchCondition' => array('AvailableToWorkTuesday', $tue),

                                          'addSearchCondition' => array('AvailableToWorkWednesday', $wed),

                                          'addSearchCondition' => array('AvailableToWorkThursday', $thurs),

                                          'addSearchCondition' => array('AvailableToWorkFriday', $fri),

                                          'addSearchCondition' => array('AvailableToWorkSaturday', $sat),

                                          'addBetweenCondition' => array('DateCreated',DATE_ADD(NOW(),INTERVAL -1 DAY),NOW(),'AND'),

                                      )

                                    ),

                                 

                                ),

                                

                            ));



any ideas how to fix that ?, am referring to the addBetweenCondition at the bottom of the code above

if am gonna use php functions, as what blindmoe said, do you have any suggestion how to insert or what to do ?




'addBetweenCondition' => array('DateCreated',DATE_ADD(NOW(),INTERVAL -1 DAY),NOW(),'AND'),



to

if your date format is Y-m-d then use this




'addBetweenCondition' => array('DateCreated',date('Y-m-d',strtotime("-1 day")),date('Y-m-d'),'AND'),




if(isset($_GET['Wsrecruitcvhead']['DateCreated'])){

                    if($_GET['Wsrecruitcvhead']['DateCreated'] == 1){

                        $test = new CActiveDataProvider('Wsrecruitcvhead',array(

                            'criteria' => array(

                                  'select' => 'ResumeID, ResumeTitle, ResumeSummaryIntroduction',

                                    'addSearchCondition' => array('ResumeTitle', $resumetitle),

                                    'addSearchCondition' => array('ResumeSummaryIntroduction', $resumesummaryintroduction),

                                    'addSearchCondition' => array('SummaryOfSkills', $summaryofskills),

                                    'with' => array(

                                      'wsrecruittimes' => array(

                                          'on' => 'wsrecruittimes.ResumeID=wsrecruitcvhead.ResumeID',

                                          'joinType' => 'INNER JOIN',

                                          'addSearchCondition' => array('AvailableToWorkSunday', $sun),

                                          'addSearchCondition' => array('AvailableToWorkMonday', $mon),

                                          'addSearchCondition' => array('AvailableToWorkTuesday', $tue),

                                          'addSearchCondition' => array('AvailableToWorkWednesday', $wed),

                                          'addSearchCondition' => array('AvailableToWorkThursday', $thurs),

                                          'addSearchCondition' => array('AvailableToWorkFriday', $fri),

                                          'addSearchCondition' => array('AvailableToWorkSaturday', $sat),

                                          'addBetweenCondition' => array('DateCreated',date('Y-m-d',strtotime("-1 day")),date('Y-m-d'),'AND'),

                                      ),

                                    ),

                                  ),

                            'pagination' => array(

                                  'pageSize' => 2,

                                )

                             ));

                                $this->render('advancecvsearch',array('dataProvider'=>$test));

                           }//end if GET

                }



can somebody tell me what I missed in that code above ? because am getting an error, here’s the screen shot

AddSearchCondition is a function, not a property, you cannot configure as an array.

You should change to:




$criteria= new CDbCriteria;

$criteria->select = ...

$criteria->addSearchCondition('...');

...

$test = new CActiveDataProvider('Wsrecruitcvhead',array(

                            'criteria' => $criteria,

                            'pagination' => array(

                                  'pageSize' => 2,

                                )

                             ));

ok I did it like




   $criteria1 = new CDbCriteria;

   $criteria1->select = 'ResumeID, ResumeTitle, ResumeSummaryIntroduction';

   $criteria1->addSearchCondition('ResumtTitle',$resumetitle);

   $criteria1->addSearchCondition('ResumeSummaryIntroduction',$resumesummaryintroduction);

   $criteria1->addSearchCondition('SummaryOfSkills', $summaryofskills);



how bout the joine part of the code to another table with additional addSearchCondition?

how to add that in my $criteria1 above ?