Witam drogich Panów, o pomoc proszę.
Mam taki kejs do rozwiązania.
Mam dwa modele:
User: id, username, password, group_id
oraz
Cluber: id, nickname, email, [kilka pol opisowych], user_id
mam prosty formularz rejestracji
<?php echo $form->create('User', array('type' => 'file'));?> <fieldset>
<legend><?php __('Add Cluber');?></legend>
<?php
echo $form->input('Cluber.email'); echo $form->password('User.password'); echo $form->error('User.password'); echo $form->password('User.password_confirm'); echo $form->error('User.password_confirm');
echo $form->input('Cluber.nickname'); echo $form->file('Cluber.avatardir'); ?>
</fieldset>
<?php echo $form->end('Submit');?>
a akcja dodawania (kontroler: users) wygląda tak:
function register() {
if (!empty($this->data)) { $this->data['Cluber']['avatardir'] = null; // niech nie wywala się przy array od aatara
if($this->User->saveAll($this->data, array('validiate' => 'first', 'atomic' => false))) { $this->Session->setFlash(__('Zarejestrowałeś się. Gratulacje.', true));
$this->redirect(array('action'=>'index')); }
}
}
a tak relacje w user:
'className' => 'Cluber',
'foreignKey' => 'user_id',
'dependent' => false,
)
);
a tak w cluber:
'className' => 'User',
'foreignKey' => 'user_id',
)
);
Jednak akcja dodawania zapisuję jedynie clubera, bez user_id i tyle, i chce cofać transakcje, bez errorów walidacji.
Tak wygląda zrzut SQLa podczas działania akcji
(DEFAULT) 7 queries took 8 ms
Nr Query Error Affected Num. rows Took (ms)
1 DESCRIBE `users` 4 4 2
2 DESCRIBE `groups` 2 2 3
3 DESCRIBE `clubers` 7 7 2
4 START TRANSACTION 0 0
5 INSERT INTO `clubers` (`email`, `nickname`, `avatardir`) VALUES ('b@br-design.pl', 'Bard', NULL) 1 0
6 SELECT LAST_INSERT_ID() AS insertID 1 1 0
7 ROLLBACK
Panowie, wyrywam sobie już włosy, błagam pomocy!