Итак, у меня есть таблица клиентов, таблица контактов и таблица контактов contacts_customers, которая также имеет поле contact_type_id, которое отображается в таблицу contact_type. Я использовал информацию, связанную с дополнительным полем Обновление CakePHP в таблице соединений HABTM , в попытке найти решение, но оно работает только частично. Я изменил метод add()
в ContactCustomersController
на
$this->ContactsCustomer->Contact->save($this->data);
$this->ContactsCustomer->create();
if ($this->ContactsCustomer->save($this->data,
array('validate' => 'first'))) {
$this->Session->setFlash(__('The contacts customer has been saved', true));
$this->redirect(array('controller' => 'contacts_customers', 'action' => 'index'));
} else {
$this->Session->setFlash(__('The contacts customer could not be saved. Please, try again.', true));
}
Обратите внимание на сохранение из двух частей; это связано с тем, что при использовании метода saveAll()
модели ContactsCustomer
произошел сбой без каких-либо указаний на проблему (все, что отображалось в журнале SQL на странице результатов, было BEGIN
, за которым сразу следовал ROLLBACK
). Здесь я предположил, что это связано с ограничением внешнего ключа между таблицей contacts
и таблицей contacts_customers
, поэтому я выбрал сохранение из двух частей.
В любом случае в текущем коде не сообщается об ошибках, но конечным результатом является то, что соответствующая информация сохраняется в таблице contacts
, но ничего не сохраняется в таблице соединения contacts_customers
. Представленные данные, по-видимому, соответствуют данным журнала FireBug:
_method POST
data[Contact][address_1] asdsad
data[Contact][address_2]
data[Contact][city] asdasd
data[Contact][email] jb@sc.net
data[Contact][fax]
data[Contact][first_name] Joe
data[Contact][last_name] Blow
data[Contact][mobile_phon...
data[Contact][office_phon... sdfsdfdf
data[Contact][postal_code... 121212
data[Contact][state] asdas
data[Contact][title]
data[ContactsCustomer][ContactType]
data[ContactsCustomer][ContactType][] 1
data[ContactsCustomer][ContactType][] 2
data[ContactsCustomer][ContactType][] 3
data[ContactsCustomer][Customer] 1
Что я здесь неправильно сделал? Большое спасибо за любую помощь!
Соответствующие данные модели:
contact.php
var $hasMany = array(
'ContactsCustomer'
);
contact_types.php
var $hasMany = array(
'ContactsCustomer'
);
customer.php
var $hasMany = array(
'ContactsCustomer'
);
contacts_customer.php
var $belongsTo = array(
'Contact', 'ContactType', 'Customer'
);