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 :’(
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,));
Sebenarnya sama saja kok, pake findAllByAttributes atau pake findAll, sama2 harus diforeach . 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 />';
}