преамбула: есть такие таблицы
CREATE TABLE `employees` ( `id` int(10) unsigned NOT NULL auto_increment, `first_name` varchar(255) collate utf8_unicode_ci NOT NULL, `last_name` varchar(255) collate utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) CREATE TABLE `employees_professions` ( `employee_id` int(10) unsigned NOT NULL, `profession_id` smallint(5) unsigned NOT NULL, PRIMARY KEY (`employee_id`,`profession_id`), KEY `FK_professions_employees` (`profession_id`), CONSTRAINT `FK_professions_employees` FOREIGN KEY (`profession_id`) REFERENCES `professions` (`id`) ON DELETE CASCADE, CONSTRAINT `FK_employees_professions` FOREIGN KEY (`employee_id`) REFERENCES `employees` (`id`) ON DELETE CASCADE ) CREATE TABLE `professions` ( `id` smallint(5) unsigned NOT NULL auto_increment, `title` varchar(255) collate utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `title` (`title`) )
есть модель Employees c отношениями:
public function relations() { return array( 'professions' => array(self::MANY_MANY, 'Professions', 'employees_professions(employee_id, profession_id)'), ); }
есть модель Professions с таким же отношением:
public function relations() { return array( 'employees' => array(self::MANY_MANY, 'Employees', 'employees_professions(employee_id, profession_id'), ); }
во форме модели Employee добавляю поле
CHtml::activeDropDownList($model, 'professions', CHtml::listData(Professions::model()->findAll(), 'id', 'title'), array('multiple' => 'multiple'));
список выводится отличный, но при сохранении
$model->attributes = $_POST['Employees'];
$model->attributes не содержит professions. Поле professions указано в safeAttributes. В чем может быть проблема?