Cakephp 1.3 Сохранить несколько строк модели, некоторые с идентификатором, а некоторые без идентификатора - PullRequest
2 голосов
/ 10 ноября 2011

Возможно ли обновить существующие данные и сохранить новые данные одновременно, не обходя массив?Я хотел бы, чтобы массив с идентификатором обновлялся, а массив без идентификатора создавал новую запись.Смотрите пример ниже.Спасибо за вашу помощь.

[Workload] => Array
    (
        [0] => Array
            (
                [phase_count] => 1
                [id] => 17
                [value] => {"phases":[{"rep_range":"20-30","rep_set_count":"1"}]}
                [user_id] => 1
            )

        [4] => Array
            (
                [phase_count] => 1
                [value] => {"phases":[{"rep_range":"20-30","rep_set_count":"1"}]}
                [user_id] => 1
            )
);

, а затем это

$this->Workload->saveAll($this->data['Workload']);

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

Вот код, который фактически сохраняет этот массив

   if($this->data){
        array_walk($this->data['Workload'], function (&$value,$index){
            // This will need to be changed once users are setup
            if(empty($value['user_id'])){
                $value['user_id'] = 1;
            }
            $value['value'] = json_encode($value['value']);
        });
        debug($this->data);
        $this->Workload->saveAll($this->data['Workload']);

1 Ответ

2 голосов
/ 10 ноября 2011

На самом деле, я делаю именно это в одном из моих приложений.Если идентификатор отсутствует, будет создана запись в таблице.Если указан идентификатор, запись будет обновлена.

...