Fungsi Search yang tidak lagi spt dulu

Punten niy, Kang… Teh…

saya bnr2 masih newbie. skg saya mo nanya ttg permasalahan fungsi search yang tlh disediain yii…

ketika saya masukkin instance di salah satu tabel, eh malah ga bisa keambil tuple yang memenuhi syarat…

trus ada error message kek gini (yang ada di gambar)…

1857

masalahSearch.png

mohon bantuannya ya, sapa tau ada yang bisa ngasih solusi…

mkasih sebelumnya… hehe

kalau dilihat dari errornya namapengadaan ngak ada di tabel itu… :)

coba kasih lihat codenya mungkin bisa lebih jelas

ya inti permasalahannya nama kolol itu tidak ada, apakah bea, atau hilang, tapi yang jelas tidak ada, penyebabnya naon yang tueing… perlu more inpoh nih gan…

ini untuk modelnya


public function attributeLabels()

	{

		return array(

			'namaPengadaan' => 'Nama Pengadaan',

			'tanggalPengadaan' => 'Tanggal Pengadaan',

			'nilaiPengadaan' => 'Nilai Pengadaan',

			'kodeDokumen' => 'Kode Dokumen',

		);

	}


public function search()

	{

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

		// should not be searched.


		$criteria=new CDbCriteria;


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

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

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

		$criteria->compare('kodeDokumen',$this->kodeDokumen);


		return new CActiveDataProvider(get_class($this), array(

			'criteria'=>$criteria,

		));

	}

sepertinya saya pernah mangalami kasus seperti ini juga… errornya sama persis kolom tidak terdaftar. Jadi ternyata nama Model tidak bisa sama dengan nama tabel di database

(walaupun pernah saya tanyakan di forum seharusnya bisa2 saja).

misalkan:




class Pelanggan extends CActiveRecord {


}



saya ubah menjadi




class TPelanggan extends CActiveRecord {


}



Karena nama tabel di database adalah Pelanggan

bukannya pengubahan model spt itu akan mengubah konfigurasi controller tabel tersebut y?

begini Mas Hermans, kemarin itu saya penasaran kenapa bisa apa yang telah digenerate dr dbase saya (sy memakai postgresql 8.4) itu kok malah ngerror. Saya bikin 2 dabase, yang 1 ada auto incrementnya (dg serial/membuat sequence pada dbase) yang 1 lagi tidak. Nah, yang bermasalah pada saat pencarian hanya yg memakai auto increment saja (yang 1 lagi tuh baik2 saja).

kira2 apa yang salah ya, Mas?

Bisa di perjalas lagi ga script model secara kseluruhan…

beserta SQL Create Tabelnya…

dan di main config db-nya pake tablePrefix ga??

sy juga pernah mengalaminya, tetapi pada saat insert database. Masalahnya cuma tanda petik .

Mungkin nama kolomnya case sensitive, jadi nama kolom di grid viewnya harus sama dengan yg ada di model. di model kan "namaPengadaan", dan errornya namapengadaan. jadi harus sama2 namaPengadaan di model dan viewnya.

@__agus

setuju… coba cek nama tabelnya kemungkinan case sensitive, soalnya dari pengalaman untuk pgsql biasnya casesensitive beda dengan mysql.

@Suhanda : maksudnya tablePrefix apa ya, Mas?

@__agus & Hermans : saya sudah mencari kata ‘namapengadaan’ yang tidak sama dengan ‘namaPengadaan’, namun saya tidak menemukannya… apakah kalo melakukan pencarian bisa melalui fungsi search dg sql biasa? terima kasih

sok tau aja ini mah :D

klo yang ini


return new CActiveDataProvider(get_class($this), array(

                        'criteria'=>$criteria,

                ));



diganti sama ini


return new CActiveDataProvider('Namamodel', array(

                        'criteria'=>$criteria,

                ));



@all : makasih ya atas partisipasinya… ternyata saran __agus dan Hermans tepat… setelah ditambahkan petik pada nama atribut di dabase, fungsi search yg default-nya yii langsung berfungsi… hehe,