CakePHP не сохраняет значение обновления в связанной таблице, но ошибок нет - PullRequest
0 голосов
/ 05 мая 2010

Функция обновления заказа находит все строки заказа текущего заказа.
Позволяет выполнить вычитание количества, заказанного с уровня запасов, и сохранение нового значения уровня запасов в $ newstock.Все хорошо.
Но не сохранит.
Повторяет «успех» и правильное значение, но база данных не обновляется.

Поле «Статус заказа» обновляется с тем же синтаксисом кода.
Он также имеет те же отношения с Orderline.(Функция вызывается из контроллера строки)

Связи таблиц:

'Product'hasMany = array (' Orderline ');
' Order 'hasMany = array ('Строка заказа ');
"Строка заказа" относится к массиву ("Заказ", "Продукт");

function updateOrder(){
  $this->data['Order']['id'] = $this->getOrderid();
  $orderproducts = $this->Orderline->find('all',array('conditions' =>     
                           array('Orderline.order_id' => $this->data['Order']['id'])));

foreach($orderproducts as $orderproduct){
  $newstock = $orderproduct['Product']['stock']-$orderproduct['Orderline']['quantity'];
  $this->data['Product']['stock']= $newstock;

  if( $this->Product->saveAll($this->data)){
    echo "success"  ;
  }else{
    echo "not saved";
  }
}

  $this->data['Order']['status']= 1;
  $this->Order->saveall($this->data);

}

Ответы [ 2 ]

1 голос
/ 28 сентября 2010

Хочу добавить, что я работал в режиме сохранения без вывода сообщений, используя saveAll, потому что я не очистил папку APP / tmp / cache.

0 голосов
/ 05 мая 2010

решаемая.

На самом деле он добавляет новые строки в таблицу Product.

Эта строка отсутствовала во вставке в цикле foreach, напоминая ей об использовании текущего идентификатора продукта, чтобы знать, куда вставить новые данные.

$ this-> data ['Product'] ['id'] = $ orderproduct ['Product'] ['id'];

...