Я пытаюсь создать систему приглашений с CakePHP.У меня есть модель приглашения, которая имеет много людей, и человек имеет одно и принадлежит к приглашению.Я полагаю, что отношения работают, так как мое представление индекса приглашений может правильно получать доступ и отображать связанных с ним людей с помощью модели приглашений.Но вот как выглядят правила отношений:
class Invitation extends AppModel {
var $name = 'Invitation';
var $hasMany = array(
'People' => array(
'className' => 'Person',
'foreignKey' => 'invitation_id',
'dependent'=> true
)
);
...
}
class Person extends AppModel {
var $name = 'Person';
var $hasOne = 'Invitation';
var $belongsTo = 'Invitation';
...
}
ОБНОВЛЕННЫЕ ОТНОШЕНИЯ МОДЕЛИ:
class Invitation extends AppModel {
var $name = 'Invitation';
var $hasMany = array('Person');
...
}
class Person extends AppModel {
var $name = 'Person';
var $belongsTo = array('Invitation');
...
}
Однако в моей функции добавления приглашений у меня возникают проблемы с сохранением данных для новых пользователей.Я хочу одновременно добавить одно приглашение и двух человек.
Вот моя функция добавления:
function add() {
$this->autoRender = false;
if($this->RequestHandler->isAjax()) {
$this->layout = 'ajax';
if(!empty($this->data)) {
$this->Invitation->create();
if($this->Invitation->saveAll($this->data)) {
//debug($this->data);
$this->Session->setFlash('Saved');
$this->redirect('invitations/add_invitations');
} else {
echo('Didnt save<br />');
}
}
}
}
Вот вывод моей отладки ($ this-> data):
Array
(
[Invitation] => Array
(
[code] => 001
[password] => 85c8a3735499bf91d25e5960ab4ed9deeb0b457e
[type] => 1
[num_people] => 2
)
[Person] => Array
(
[0] => Array
(
[fname] => Jane
[lname] => Doe
)
[1] => Array
(
[fname] => John
[lname] => Doe
)
)
)
Я не получаю никакойошибки.Данные приглашения сохраняются правильно, а люди - нет.
ОБНОВЛЕНИЕ: я наконец-то начал работать с вышеупомянутыми обновленными модельными отношениями.Очевидно, что правила hasOne & ownTo в модели Person были противоречивыми.После этого я допустил ошибку (смущающую), которая препятствовала сохранению связанной связанной модели Person:
В модели приглашений у меня есть $ hasMany = array ('People');когда это должен был быть $ hasMany = array ('Person').
Мне также пришлось изменить конфигурацию моей базы данных, чтобы использовать InnoDB по умолчанию, так что это, безусловно, было необходимым исправлением.