Cgridview - Joining Two Tables Instead Of Id The Other Field

I am new to YII!!!

I want to join two tables (member, membercontact)…and want to access firstName , lastName from "member" table through "membercontact" memberId … the relation key is "memberId" … not "id"

I set relation in "member", "membercontact" as below

‘membercontacts’ => array(self::HAS_MANY, ‘Membercontact’, ‘memberId’),

‘member’ => array(self::BELONGS_TO, ‘Member’, ‘memberId’),

Table Structure is as follows,

++++++member+++++++++

id

memberId

familyId

salutationId

firstName

middleName

+++++++membercontact++++++

id

memberId

familyId

address

emailProfessional

emailPersonal

my view code,


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

	'id'=>'membercontact-grid',

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

	'filter'=>$model,

	'columns'=>array(		

		'memberId',

                 //display FN LN'',                

                array(

                    'header'=>'First Name', //column header

                    'name' => 'memberId',

                    'value'=>'$data->member->firstName',                   

                    'type'=>'raw',

                ),


                array(

                        'name'=>'emailProfessional',

                        'header'=>'Email 1(Pro)',                        

                       'value'=>'$data->emailProfessional'                       

                    ),   

               



error is unable " Trying to get property of non-object "

‘value’=>’$data->member->firstName’,

  1. Are you sure that particular row in memberContact has corresponding row in member? I got the same problem some times ago and the problem was that row has no corresponding row in parent table.

  2. try to use this




'membercontacts' => array(self::HAS_MANY, 'Membercontact', array('memberId', 'memberId')),


'member' => array(self::BELONGS_TO, 'Member', array('memberId', 'memberId')),