Menampilkan data dari model lain menggunakan Cgridview

agan2 dan sis2 skalian,ane mau bertanya,

ane mau nampilin data dari model lain pake cgridview

tabel nya sih kayak gini

-lksaData-

id

name

code

dst

-childData-

id

name

code

lksaData_id

nah ane sih bikinnya kayak gini




-view lksaData-

<?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'child-data-grid',

	'dataProvider'=>$model->childData->findAnak($model->id),

	'filter'=>$model,

	'columns'=>array(

		'id',

		'child_code',

		'child_name',

		'gender_id',

		'pob',

		'dob',

		

		array(

			'class'=>'CButtonColumn',

		),

	),

)); ?>

ane mau nampilin di view lksaData semua data dari childData yang ber lksaData_id nya sama ama id lksaData

dan di modelnya childData

public function findAnak($id)

	{

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

		// should not be searched.


		$criteria=new CDbCriteria;


		$criteria->compare('childData.id',$id,true);

		//$criteria->addCondition('regency_id=:userReg');

		//$criteria->params = array(':id'=>$id);

		$criteria->with=array('childData');

		return new CActiveDataProvider($this, array(

			'criteria'=>$criteria,

		));

	}

tapi kok muncul Fatal error: Call to a member function findAnak() on a non-object in C:\xampp\htdocs\lksa_kemensos\protected\views\lksaData\view.php on line 69 kenapa yah?ada yg salah dengan pemanggilan dkk nya?




mungkin karena function nya dipanggil dari model lain gan…

di action viewnya agan (mungkin) ada sintaks ini


$model = new LksaData;

jadi modelnya ngambil dari model lksaData bukan childData…

mungkin lo ya gan… soalnya ga liat action viewnya jg…

kalo ternyata udah


$model = new ChildData;

ya maap ga tau gan… :P

Hmhm,g ad sih sis,tapi emang model nya masih pnya lksadata,terus ada saran g klo mo nampilin data yg lksa I’d nya sama am yg lg di liat?soalnya ane coba find anak nya di model lksadata bingung hehe

kalo function ini di model lksadata gmn?


public function findAnak($id)

        {

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

                // should not be searched.

                $criteria=new CDbCriteria;


                $criteria->compare('id',$id,true);


               $criteria->condition = "t.id = childData.id";


                //$criteria->params = array(':id'=>$id);

                $criteria->with=array('childData');

                return new CActiveDataProvider($this, array(

                        'criteria'=>$criteria,

                ));

        }



kalo ga


 $criteria->condition = "t.id = childData.id and t.id = ".$id;

T.Id itu buat id dri lksaData kan ya sis?

Belum ane coba,tapi thx bgt dah respon,hehe :)

iya…

alias table pertama di model(kalo join) kan pake t…

cmiiw

Bukannya kalo mau menampilkan data dari tabel lain tinggal di set di relationnya gan? jadi ga usah query lagi




// di model lksaData

public function relations()


{


	return array(


		'child_Data'=>array(self::HAS_MANY, 'childData', 'lksaData_id'),




	);


}



panggil di view




<?php $this->widget('zii.widgets.grid.CGridView', array(

        'id'=>'child-data-grid',

        'dataProvider'=>$model->search(),

        'filter'=>$model,

        'columns'=>array(

                'id',

                'child_code',

                'child_name',

                'gender_id',

                'pob',

                'dob',

                array('name'=>'child_Data', 'value'=>'$data->child_Data->lksaData_id'), 

                array(

                        'class'=>'CButtonColumn',

                ),

        ),

)); ?>



blum tak coba yo :)

belom bisa nih @sis angela88 cara bikin kayak http://www.yiiframework.com/forum/index.php?/topic/25071-ask-delete-button-in-gridview-from-other-model/ gimana ya?kurang lebih saya mau buat kayak gitu,hehehemohon bntuan

oh kaya punya q itu???

view


<?php $this->widget('zii.widgets.grid.CGridView', array(

	'dataProvider'=>$model->images($model->id_content),

	'enablePagination'=>false,

	'columns'=>array(

		'id_image',

		'id_image_type'=>'imageType.name',

		'date_last_update',

		'img_name',

		'img_type',

		'img_size',

		'img_width',

		'img_height',

		

		array(

			'header'=>'Action',

            'value'=>'CHtml::link( \'Delete\', array(\'content/delete2\',\'id\'=>$data->id_image) , array(\'confirm\'=>\'Are you sure you wish to Delete this image?\',\'title\'=>\'Delete Image\') )', 

            'type'=>'raw',

		),

  ),


)); ?>

controller


public function actionView($id)

	{


		$content=Image::model()->findByAttributes(array('id_content'=>$id));

		$image=new CActiveDataProvider($content);

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

			'model'=>$this->loadModel($id),

			'image'=>$image,

		

		));

	}

model


public function images($id_content){


		$criteria = new CDbCriteria( array(

		'condition' => 'id_content = :id',

		'params'    => array(':id' => $id_content)  

		) );


		return new CActiveDataProvider('Image', array(

			'criteria'=>$criteria,

		));

	}

sama kaya yg koding sebelumnya kan…

hooo blom nambahin di controller hehehehe siip dicoba langsung yaa :D

wah makasih ya sis,:D bener2 membantu :D


'enablePagination'=>false,

itu biar g ada page nya ya?kalau mau batasin 1 table nya 5 aja gimana ya?di tambahin ‘limit’ bukan?tapi g ngaruh jadinya hmhm

mau tanya satu lagi ini kan ane ada gender_id biar bisa diubah jadi Ce atau Co gimana ya klo bda model gini?ane coba pake $model->childData->gender_id g ltangkep objeknya huhu

Yap, mending pake Relation, lebih efisien, ane pake Relation 3 tabel berhasil ;D

q biasanya bikin function di modelnya. ex :status


public function getStatus($val){

			if($val==1)

				return "Active";

			else if($val==0)

				return "Inactive";

			else if($val==2)

				return "Pending";

			else if($val==3)

				return "Reject";

		}

di gridview


array(

			'name'=>'status',

			'type'=>'raw',

			'value'=>'MyModel::model()->getStatus($data->status)',

		),


'enablePagination'=>false'

-> iya buat disable paging…

q lum pernah cba pake limit c gan…

kebetulan q lagi dikejar target jg jadi ga bisa bantu carinya…

:rolleyes: