Сохранение данных в новую таблицу с CakePHP - PullRequest
0 голосов
/ 20 мая 2011

У меня есть база данных заказов, и я хочу сохранить заказы в новой базе данных после завершения заказа.В моей модели заказа есть таблица с идентификатором, клиентом, номером участника и т. Д., А в моем OldOrder есть копия таблицы заказа.

Когда заказ был выполнен, я планировал сохранить данные заказа в модели OldOrder, а затем удалить заказ из модели заказа.Таким образом, у меня может быть небольшая база данных текущих заказов, и пусть старая база данных заказов расширяется.

Я запутался в том, что лучший способ сделать это, моя попытка заключалась в создании действия в моей модели Заказа, такой какэто (это просто предназначено для копирования данных в модель OldOrder):

function save_order() {
    if(!empty($this->data)){
        $id = $this->data['Order']['id'];
        $this->data = $this->Order->find('first', array('conditions' => array('Order.id' => $id)));
        $this->loadModel('OldOrder');
        $this->OldOrder->save($this->data);
    }
}

Однако это не работает.Я не получаю никаких сообщений об ошибках, но ничего не сохраняется в таблицу OldOrder.Любая информация, почему это происходит, или лучший способ достичь того, что я хочу сделать, будет принята с благодарностью!

РЕДАКТИРОВАТЬ:

Это дамп SQL из действия:

1 SHOW FULL COLUMNS FROM `orders`
2 SELECT CHARACTER_SET_NAME FROM INFORMATION_SCHEMA.COLLATIONS WHERE COLLATION_NAME= 'latin1_swedish_ci';       1   1   4
3 SHOW FULL COLUMNS FROM `users`
4 SELECT `Order`.`customer`, `Order`.`length`, `Order`.`height`, `Order`.`date`, `Order`.`quantity`, `Order`.`order_number`, `Order`.`date_created`, `Order`.`date_dispatched`, `Order`.`id` FROM `orders` AS `Order` WHERE `Order`.`id` = 17 
5 SHOW FULL COLUMNS FROM `old_orders`

1 Ответ

3 голосов
/ 20 мая 2011

Вам необходимо передать данные Order в метод сохранения модели OldOrder следующим образом:

$this->OldOrder->save(array('OldOrder' => $this->data['Order']));

Или вы также можете сделать это следующим образом:

$this->OldOrder->set($this->data['Order']);
$this->OldOrder->save();

Из документации CakePHP :

CakePHP позволяет легко сохранять данные модели.Данные, готовые для сохранения, должны быть переданы методу save () модели в следующем основном формате:

 Array
 (
     [ModelName] => Array
         (
             [fieldname1] => 'value'
             [fieldname2] => 'value'
         )
 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...