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
<fieldset> <legend><?php __('Add Cluber');?></legend> <?php ?> </fieldset>
a akcja dodawania (kontroler: users) wygląda tak:
function register() { $this->data['Cluber']['avatardir'] = null; // niech nie wywala się przy array od aatara $this->Session->setFlash(__('Zarejestrowałeś się. Gratulacje.', true)); } } }
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!