CDbCriteria

bro and sis,mau tanya dung ane bikin criteria baru buat function index ane

spoiler penampakan




$user_id=Yii::app()->user->id;

		$user= User::model()->findByAttributes(array('id' => $user_id));

//		var_dump($user->regency_id);

//		die();

		$user_reg=$user->regency_id;

		$criteria = new CDbCriteria();

		$criteria->condition = 'lksaData.regency_id=regency_id';

		$criteria->params = array('lksaData.regency_id'=>$user_reg);

		$criteria->with='lksaData';




		//$lksaDataHeader = LksaDataHeader::model()->findAll($criteria);


		$dataProvider= new CActiveDataProvider($this, array(

			'criteria'=>$criteria,));

		//$dataProvider=new CActiveDataProvider('LksaDataHeader');

		$this->render('index',array(

			'dataProvider'=>$dataProvider,



tapi muncul error

Fatal error: Call to a member function getDbCriteria() on a non-object in C:\xampp\htdocs\lksa_kemensos\framework\web\CActiveDataProvider.php on line 173

gimana ya yg benernya?ane masih bingung am ini :’(

mohon bantuannya

Saya coba bantu gan :D




Ganti code:

$criteria->condition = 'lksaData.regency_id=regency_id';

$criteria->params = array('lksaData.regency_id'=>$user_reg);


menjadi:

$criteria->condition = 'regency_id= :regency_id';

$criteria->params    = array(':regency_id' => $user_reg);


Kemudian jika fungsi ini berada di controller maka ganti $this pada:

$dataProvider= new CActiveDataProvider($this, array(

                        'criteria'=>$criteria,));


menjadi nama model yg akan dicari. Misalnya nama modelnya lksData maka codenya seperti ini:

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

                        'criteria'=>$criteria,));



semoga masalahnya terpecahkan

hooo heheh mksih ya bro,tadi salah $this ganti jadi $model,dan $model dideclare sesuai model :D yaa mirip am agan blg,

bro ane lupa klo ane findAllByAttributes itu harus foreach kan buat nampilin?

bisa minta tolong contoh codingan yg pake foreach gak :D

Sebenarnya sama saja kok, pake findAllByAttributes atau pake findAll, sama2 harus diforeach :D. Perbedaannya terletak pada peletakan criterianya/kondisinya. Coba bandingkan script sy dibawah. Jadi kalau pake findAllByAttributes nama kolom langsung dimasukan ke kriteria, sedangkan findAll tidak.

Contohnya begini, misalnya saya punya model dengan nama Buku dan kolom2nya yaitu id_buku, id_kategori, judul, pengarang, penerbit.

dan saya ingin menampilkan buku dengan id_kategori = 1.




// Dengan findAllByAttributes

// di controllernya.

$model = Buku::model()->findAllByAttributes(array('id_kategori' => 1));


// di viewnya.

foreach($model as $val) {

    echo $val->judul.'<br />';

}


// --------------------------------------------------------------------

// Dengan findAll

// di controllernya.

$model = Buku::model()->findAll(array(

  'condition' => 'id_kategori= :id_kat',

  'params' => array(':id_kat' => 1)

));


// di viewnya.

foreach($model as $val) {

    echo $val->judul.'<br />';

}



Demikian gan, semoga paham :D

oooh iya ngerti gan makasih ya,mklum msih newbie bgt di php juga :D jadi hal dsar php juga bru ngerti dikit :(

boleh nanya lagi g gan tentang Statistical Query di YII?

misal gini Ane ada 3 tabel,tabel LksaHeader-LksaData-ChildData

Nah di ChildDta ini ane mau hitung semua Anak yang lksaDatanya misal 1 dan status nya 1 terus ane masukin ke tabel lksadataheader,itu gimana ya?

ane dah coba bikin relational kayak gini


'childCount'=>array(self::STAT, 'ChildData', 'lksa_data_id'),

trus di controllernya gini


$count= ChildData::model()->with('childCount')->findAll();

$lksaDataHeader=new LksaDataHeader;

$lksaDataHeader->count_child=$count;



bener gak ya?bisa minta contoh penggunaan count gak?