$this-›Agreements-›save() - создать только одну запись, почему?

Мне нужно прочитать все записи из таблиц соглашений, внести изменения в поданные платежи и обновить все записи, сохранить в таблицу. Итак, моя проблема в том, что save() создает только пустую запись. Не обновлять существующую запись. Я покажу вам, как:

Чтение из таблицы:

$agreements = $this->Agreement->find('all');
$payments = $this->Payment->find('all');

Манипуляции с полями (частью) (пример):

$id=0;
foreach ($agreements as $agreement):
    for ($i=$first_agreement; $i<=$last_agreement; $i++){ 
        if ( $agreement['Agreement']['agreement_number']==$i){
           $agreements[$id]['Agreement']['payment']=$payd[$i];
        }
      }
$id++;
endforeach;

Запись в таблицу:

$this->Agreement->save();

Эхо-отладка ($agreements) показывает правильный массив, я также пробовал:

$this->Agreement->save($agreements);

or

$this->Agreement->save($this->request->data);

Можете ли вы помочь/объяснить мне, как написать всю запись?

Торт 2.5.2 PHP: 5.4.4-14


person tomas3man    schedule 30.06.2014    source источник
comment
Для меня это выглядит хорошо. Я проверю это снова   -  person tomas3man    schedule 30.06.2014


Ответы (1)


Model::save() сохраняет только одну запись. Если вы хотите сохранить несколько записей, вам нужно использовать Model::saveAll() или Model::saveMany().

person ADmad    schedule 30.06.2014
comment
Я проверю. Нужно ли устанавливать рекурсивный = -1? - person tomas3man; 01.07.2014
comment
Я думал о. И я вижу, что одна запись записывается в базу данных. Но все поля пусты? Вы можете это объяснить? Если это так, saveMany() сохранит много пустых записей. И отладка sql показывает мне, что движок вставляет запись, а не обновляет. Можете ли вы сказать мне, как изменить вставку на обновление в соглашении об активной записи? Не могли бы вы вставить мне несколько примеров? - person tomas3man; 01.07.2014
comment
это не работает, отладка sql показывает только это: INSERT INTO uat.agreements (modified, created) VALUES ('2014-07-01 21:02:49', '2014-07-01 21:02:49'). Обновляются только эти поля. - person tomas3man; 01.07.2014