Multi Compare pada CGridView

haloo yii’ers, mungkin bingung ama judulnya :P

jadi saya mau nanya nih tentang ajax inputan yang ada di tabular CGridView,

saya punya tabel yang berelasi spt:




<?php

...

	public function relations()

	{

		return array(

			

			'teacherNumber' => array(self::BELONGS_TO, 'Teachers', 'teacher_number'),

		);

	}


	

	public function search()

	{

		// Warning: Please modify the following code to remove attributes that

		// should not be searched.


		$criteria=new CDbCriteria;


		

		//$criteria->compare('teacher_number',$this->teacher_number,true);

		$criteria->compare('teacherNumber.name',$this->teacher_number,true);

		

		$criteria->with='teacherNumber';

		return new CActiveDataProvider($this, array(

			'criteria'=>$criteria,

		));

	}

}



yang jadi permasalahan adalah kalo diganti ke compare(‘teacherNumber.name’) dia jadi hanya bisa retrieve nama guru

kalo ke teacher_number jadi hanya bisa retrieve NIP guru,

kalo mau dua-duanya dalam 1 kolom input bisa apa tidak ya? mohon bantuannya

coba tambahkan lagi satu variabel di model itu





public $teacher_name;




public function search()

        {

                $criteria=new CDbCriteria;

                

                $criteria->compare('teacher_number', $this->teacher_number,true);

                $criteria->compare('name', $this->teacher_name,true);

                

                $criteria->with='teacherNumber';


                return new CActiveDataProvider($this, array(

                        'criteria'=>$criteria,

                ));

        }




jangan lupa di CGridView dtambahkan kolom dengan name teacher_name, ntar value nya bisa pake lazyloader

thanks udah bales bro,

memang kalo nambahin satu atribut lagi bisa bro, kemaren udah kucoba.

nah yang aku mau tuh biar 1 kolom input bisa search nama guru ama NIP nya bukan dibuat kedalam 2 kolom gitu lho.

nah ini yang buat bingung, apakah di CGridView bisa ky gitu ya?

ohhh… ya udah bener itu punya bro, yang diubah di fungsi search untuk CGridView itu

kenali aja karakter pertama yang dimasukkan untuk searching untuk guru.

pake aja fungsi string bawaan native php untuk mengenali karakter pertama yang dimasukkan.

[list=1][]kalo angka berarti nip[]kalo huruf berarti nama guru(setau saya belum ada nama orang diawali dg angka)[/list]contoh simpelnya di fungsi search untuk CGridView nya spt ini





if(!empty($this->guru) )

{

	$guru1 = str_split($this->guru);

	if( is_numeric($guru1[0]) ) :

		$criteria->compare('nip',$this->guru, true);

	else :

		$criteria->compare('nama',$this->guru, true);

	endif;

}