j0ker
(j0ker_)
January 27, 2011, 12:45pm
1
Привет всем.
Есть модель, например Record, мне нужно сделать копию записи с определенным id. Можно конечно попарно перебрать все поля модели, но чувствую, что есть вариант проще.
Первое, что пришло в голову это сделать так:
...
$new_record = new Record();
$record = Record::model()->findByPk(10);
$new_record->attributes = $record->attributes;
$new_record->id = NULL;
$new_record->save();
...
Но такой вариант не прошел. Как сделать правильно?
maschingan
(Maschingan)
January 27, 2011, 1:21pm
2
Почему не прокатывает, какую-то ошибку выдает?
j0ker
(j0ker_)
January 27, 2011, 2:02pm
3
На строке $record->save() выдает
CDbCommand не удалось исполнить SQL-запрос: SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value
Задампил аттрибуты этих объектов после присваения ($new_record->attributes = $record->attributes;):
$new_record->attribute
array
(
'weight' => '0'
'id' => null
'user_id' => null
'order_chapter_id' => null
'product_type_id' => null
'format_id' => null
'ttsite_id' => null
'service_type_id' => null
)
$record->attribute
array
(
'id' => '40'
'user_id' => '2'
'order_chapter_id' => '13'
'product_type_id' => '2'
'format_id' => '15'
'ttsite_id' => '39'
'service_type_id' => '1'
'weight' => '0'
)
Не понятно почему в первом случае weight идет первым…
Albert
(Testphptest)
January 28, 2011, 5:06am
4
...
$new_record = new Record();
$record = Record::model()->findByPk(10);
$new_record->setAttributes($record->attributes, false);
$new_record->id = NULL;
$new_record->save();
...