Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CakePHP]saveAll jakoś nie chce działać poprawnie
Forum PHP.pl > Forum > PHP > Frameworki
br-design.pl
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
  1. <?php echo $form->create('User', array('type' => 'file'));?>
  2. <fieldset>
  3. <legend><?php __('Add Cluber');?></legend>
  4. <?php
  5. echo $form->input('Cluber.email');
  6. echo $form->password('User.password');
  7. echo $form->error('User.password');
  8. echo $form->password('User.password_confirm');
  9. echo $form->error('User.password_confirm');
  10.  
  11. echo $form->input('Cluber.nickname');
  12. echo $form->file('Cluber.avatardir');
  13. ?>
  14. </fieldset>
  15. <?php echo $form->end('Submit');?>


a akcja dodawania (kontroler: users) wygląda tak:
  1. function register() {
  2. if (!empty($this->data)) {
  3. $this->data['Cluber']['avatardir'] = null; // niech nie wywala się przy array od aatara
  4. if($this->User->saveAll($this->data, array('validiate' => 'first', 'atomic' => false))) {
  5. $this->Session->setFlash(__('Zarejestrowałeś się. Gratulacje.', true));
  6. $this->redirect(array('action'=>'index'));
  7. }
  8. }
  9. }


a tak relacje w user:
  1. var $hasOne = array(
  2. 'Cluber' => array(
  3. 'className' => 'Cluber',
  4. 'foreignKey' => 'user_id',
  5. 'dependent' => false,
  6. )
  7. );


a tak w cluber:
  1. var $belongsTo = array(
  2. 'User' => array(
  3. 'className' => 'User',
  4. 'foreignKey' => 'user_id',
  5. )
  6. );



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
  1. (DEFAULT) 7 queries took 8 ms
  2. Nr Query Error Affected Num. rows Took (ms)
  3. 1 DESCRIBE `users` 4 4 2
  4. 2 DESCRIBE `groups` 2 2 3
  5. 3 DESCRIBE `clubers` 7 7 2
  6. 4 START TRANSACTION 0 0
  7. 5 INSERT INTO `clubers` (`email`, `nickname`, `avatardir`) VALUES ('b@br-design.pl', 'Bard', NULL) 1 0
  8. 6 SELECT LAST_INSERT_ID() AS insertID 1 1 0
  9. 7 ROLLBACK


Panowie, wyrywam sobie już włosy, błagam pomocy!
VegetaSSJ
pokaż całe klasy user i cluber. Silink bazy masz jako InnoDB ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.