CGridView Filter Search

how to make CGridView filter to search values by: values starting with.

if i write ‘p’ should search values starting with letter ‘p’.

[font="arial, verdana, tahoma, sans-serif"][size="2"]You must modify your search() method in the model to do that.[/size][/font]

[font="arial, verdana, tahoma, sans-serif"] [/font]

[font="arial, verdana, tahoma, sans-serif"] [/font][font="arial, verdana, tahoma, sans-serif"][size="2"]Changing




might work (haven’t tried).[/size][/font]

I made it working but there is a bit of change in the CDbCriteria compare() method.

We have to escape the ‘%’ and ‘_’ else they will be treated as values to be searched.

So i added the $escape=TRUE parameter to the compare() method so now we can specify for each column how to search for its values.

Here is the code:



when name=’’ it’ll get all rows.

when name=‘some-name’ it’ll get rows with name starting with ‘some-name’.

Changes in the compare method:

public function compare($column, $value, $partialMatch=false,$escape=true, $operator='AND')






			return $this->addSearchCondition($column,$value,$escape,$operator);


			return $this->addSearchCondition($column,$value,$escape,$operator,'NOT LIKE');




i think this could be added to the default functionality of CDbCriteria compare, will provide more flexibility.


this is been updated & committed changes for Yii v1.1.7.

public function compare($column, $value, $partialMatch=false, $operator='AND',$escape=true){...}

get updated CDbCriteria