Всем приветы!
Для реализации пользовательской подсистемы использую модуль yii-user(yiiframework.com/extension/yii-user/ ). Для User мне необходимо добавить поле, один (User) ко многим (Items).
Таблица Items
[sql]
CREATE TABLE IF NOT EXISTS items
(
user_id
int(11) NOT NULL,
items
varchar(255) NOT NULL,
KEY FK_user_items
(user_id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE mailbox_aliases
ADD CONSTRAINT FK_user_items
FOREIGN KEY (user_id
) REFERENCES users
(id
) ON DELETE CASCADE;
[/sql]
В модуле User создаю модель Items, указываю в relations
public function relations()
{
return array(
'user' => array(self::BELONGS_TO, 'User', 'user_id'),
);
}
В моделе User добавляю relation
public function relations()
{
$relations = array(
'profile'=>array(self::HAS_ONE, 'Profile', 'user_id'),
'items'=>array(self::HAS_MANY, 'Items', 'user_id'),
);
...
}
Потом в контрелере ProfileController метод actionProfile
public function actionProfile()
{
$model = $this->loadUser();
$this->render('profile',array(
'model'=>$model,
'profile'=>$model->profile,
'items'=>$model->items,
));
}
Мне выдает ошибку Invalid argument supplied for foreach()
/var/www/yii/framework/db/ar/CActiveFinder.php(758)
00746: {
00747: // determine the primary key value
00748: if(is_string($this->_pkAlias)) // single key
00749: {
00750: if(isset($row[$this->_pkAlias]))
00751: $pk=$row[$this->_pkAlias];
00752: else // no matching related objects
00753: return null;
00754: }
00755: else // is_array, composite key
00756: {
00757: $pk=array();
00758: foreach($this->_pkAlias as $name=>$alias)
00759: {
00760: if(isset($row[$alias]))
00761: $pk[$name]=$row[$alias];
00762: else // no matching related objects
00763: return null;
00764: }
00765: $pk=serialize($pk);
00766: }
00767:
00768: // retrieve or populate the record according to the primary key value
00769: if(isset($this->records[$pk]))
00770: $record=$this->records[$pk];
Содержимое стека
#0 /var/www/yii/framework/db/ar/CActiveFinder.php(736): CJoinElement->populateRecord()
#1 /var/www/yii/framework/db/ar/CActiveFinder.php(463): CJoinElement->runQuery()
#2 /var/www/yii/framework/db/ar/CActiveFinder.php(166): CJoinElement->lazyFind()
#3 /var/www/yii/framework/db/ar/CActiveRecord.php(240): CActiveFinder->lazyFind()
#4 /var/www/yii/framework/db/ar/CActiveRecord.php(108): User->getRelated()
#5 /var/www/benben.mario/protected/modules/user/controllers/ProfileController.php(20): User->__get()
#6 /var/www/yii/framework/web/actions/CInlineAction.php(57): ProfileController->actionProfile()
#7 /var/www/yii/framework/web/CController.php(300): CInlineAction->run()
#8 /var/www/yii/framework/web/CController.php(278): ProfileController->runAction()
#9 /var/www/yii/framework/web/CController.php(257): ProfileController->runActionWithFilters()
#10 /var/www/yii/framework/web/CWebApplication.php(324): ProfileController->run()
#11 /var/www/yii/framework/web/CWebApplication.php(121): CWebApplication->runController()
#12 /var/www/yii/framework/base/CApplication.php(135): CWebApplication->processRequest()
#13 /var/www/benben.mario/index.php(13): CWebApplication->run()
Где я делаю не так? Помогите пожалуйста.