Похоже, вам не нужно многомодельное gridview.Сетка, которую вы предоставляете по мере необходимости, отображает элементы только одной модели, user_master.Свойство «Друзья» фактически принадлежит этой модели, потому что это значение относится к каждому конкретному экземпляру таблицы user_master.Таким образом, вы можете представить свойство «Друзья» как дополнительный столбец в таблице user_master.Вам не нужно добавлять эту строку в таблицу, просто чтобы объявить ее свойством в модели.Добавьте следующую строку в массив, возвращаемый функцией 'Relations' модели user_master:
'FriendsCount'=> array(self::STAT, 'friend_master', 'user_id'),
Подробнее о том, как это работает, можно прочитать здесь: http://www.yiiframework.com/doc/api/1.1/CActiveRecord/#relations-detail.
Вкратце объясним,тип отношений STAT просто извлекает статистические значения модели.В этом конкретном случае будет учитываться только количество друзей, связанных с каждым экземпляром модели user_master.
Теперь, внутри вашего определения CGridView, вы должны объявить 3 столбца, которые вы хотите отобразить.Это делается внутри массива столбцов.Конечно, user_id и name будут распознаваться как явно объявленные свойства отображаемой модели, поэтому нам не нужно о них заботиться.Но для столбца «Друзья» может потребоваться явно указать значение, которое мы хотим отобразить.Это делается просто с помощью массива:
<?php $this->widget('zii.widgets.grid.CGridView', array(
...
...
'columns'=>array(
'user_id',
'name',
array(
'class'=>'CDataColumn',
'name'=>'Friends',
'value'=>'$data->FriendsCount', //The FriendsCount relation we declared
),
),
));
?>
Вы можете заметить, что используя этот синтаксис на основе массива, вы можете объявить довольно универсальные столбцы.