Symfony вставляет несколько записей - PullRequest
0 голосов
/ 22 декабря 2009

У меня проблемы с вставкой нескольких записей в Symfony, что происходит со 2-й до последней записи, просто обновляет первую запись

например:

$n = new Object();

// start loop until i = 5
$n->count = $i;
$n->text = 'a'.$i;
$n->save();
i++;
//end loop

после этого цикла есть только 1 запись ... count = 5, text = a5;

есть ли способ очистить $ n, чтобы при повторной вставке новой записи она не обновлялась первой?

Ответы [ 3 ]

4 голосов
/ 22 декабря 2009

Я думаю, что ваш псевдокод должен немного измениться - включите новое определение в цикл:

// start loop until i = 5
$n = new Object();
$n->count = $i;
$n->text = 'a'.$i;
$n->save();
i++;
//end loop

Это также имеет больше смысла - вы хотите создать 5 новых строк, поэтому для этого вам нужно создать новый объект 5 раз.

0 голосов
/ 30 декабря 2009

Вы модифицируете тот же объект, который Symfony интерпретирует как изменение той же строки базы данных. Переместите код создания объекта в цикл.

Вы можете подумать, что вы оптимизируете производительность, создавая объект только один раз, но вызывая save () для объекта, который уже имеет атрибут 'id', symfony вместо обновления вставит обновление базы данных , Вставки, как правило, являются операциями с постоянным временем, в то время как производительность ваших обновлений будет зависеть от различных факторов, в том числе от того, как настроены ваши индексы.

P.S. Я НЕТ дБ, поэтому, может быть, я полностью отключен: -)

0 голосов
/ 22 декабря 2009

Если вы хотите сохранить новую операцию вне цикла, unset ($ n-> id) сделает свое дело.

...