MANY_MANY save

Добрый вечер. Столкнулся с такой проблемой:

есть таблицы ‘customers’, ‘rooms’, ‘rooms_has_customers’, последняя является связующей для первых двух.

При записи в ‘customers’ так же должна добавляться запись в ‘rooms_has_customers’, чтобы обозначить к какой комнате относится посетитель.

отношения в ‘customers’:


	public function relations() {

		return array(

			'rooms' => array(self::MANY_MANY, 'Rooms', '{{rooms_has_customers}}(rooms_id, customers_id)'),

		);

	}

отношения в ‘rooms’:


	public function relations() {

		return array(

			'customers' => array(self::MANY_MANY, 'Customers', '{{rooms_has_customers}}(rooms_id, customers_id)'),

		);

	}

записываю таким образом:




public function actionAdd($number = null) {

		$customers = new Customers();


		if(isset($_POST['Customers'])) {

			$customers->setAttributes($_POST['Customers']);

			if($customers->validate()) {

				if($customers->save()) {

					Yii::app()->user->setFlash('success', 'Постоялец успешно добавлен.');

				}

			}

		}

		

		$this->render('add', array('customer' => $customers));

	}



Результат - в таблицу ‘customers’ добавляется запись с null везде.

Попробовал воспользоваться экстеншеном CAdvancedArBehavior.

Получаю ошибку:


CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or 

update a child row: a foreign key constraint fails (`hotel`.`rooms_has_customers`, CONSTRAINT 

`fk_rooms_has_customers_customers1` FOREIGN KEY (`customers_id`) REFERENCES `customers` (`id`) ON DELETE CASCADE ON UPDATE 

CASCADE)

зашел в тупик… может кто-нибудь подсказать как бороться?

что за скобки? :blink:

насколько помню такая запись нужна чтобы не использовать в названиях таблиц префикс, который можно задать в конфиге.

Проблема была в правильном описании взаимосвязей - объединяющих ключей. В одной модели они должны были быть записаны таким образом - rooms_id, customers_id, а в другой - наоборот.