Сохранить внутри цикла - PullRequest
1 голос
/ 08 января 2010

Я создал функцию с бесконечным циклом и задержкой в ​​конце, чтобы убедиться, что она будет выполняться только один раз в секунду.

Эта функция находится в классе оболочки, и ее цель - сохранить /обновлять записи в трех разных таблицах, и я вызываю их из строки консоли, используя команду «торт className»

Моя проблема:

Я останавливаю цикл в консоли (Ctrl + C) ив базе данных сохраняется только последняя запись.

Я не знаю, есть ли проблемы с транзакцией, я пытался использовать begin () перед сохранением и фиксацией после, но проблема существовала.

Код выглядит примерно так:

$this->T1->begin();
$this->T2->begin();
$this->T3->begin();

 if ($this->T1->save((array (
    'Field1' => $val1,
    'Field2' => $val2,
    'Field3' => $val3))) 
    && $this->T2->save(array (
      'Field1' => $val4,
      'Field2' => $val5,
      'Field3' => $val6))) 
    && $this->T3->saveField('Field1', $val7)) 
 {
      $this->T1->commit();
      $this->T2->commit();
      $this->T3->commit();

      echo 'success message';
 }

1 Ответ

3 голосов
/ 08 января 2010

Это может быть связано с тем, что идентификатор по-прежнему присутствует в каждой из моделей, что часто происходит при сохранении в цикле, поскольку данные объединяются.

Попробуйте выполнить следующие действия для сброса моделей, чтобы они не загружались в предыдущие данные.

$this->Sale->create(false);
$this->Bidagent->create(false);
$this->Licitation->create(false);

Из вашего фрагмента кода, хотя я не уверен, что такое T1, T2 и T3 ... если они являются моделями, то им нужно одинаковое $this->Model->create(false);

Справка:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...