Duplique un registro AR y vuelva a insertar esto en la base de datos

Tengo un modelo de AR que bash duplicar pero solo necesito cambiar manualmente la clave externa.

$_POST['competition_id'] = 99; $prizes = CompetitionPrizes::model()->findAll('competition_id =:competition_id',array(':competition_id'=> $_POST['competition_id'])); 

Esta consulta básicamente consulta la tabla de premios y obtiene todas las filas para una competencia en particular. Con el objeto de premios, me gustaría básicamente volver a insertar / duplicar la misma información, excepto la identificación de la competencia que quiero configurar manualmente.

Hice algo similar para un objeto AR que básicamente solo tiene una fila y que funcionó bien, sin embargo, en este caso, como una competencia puede tener más de un premio, este mismo código no lo hará.

 // My existing code for duplication process $obj = Competitions::model()->find('competition_id=:competition_id', array(':competition_id' => $post['competition_id'])); $clone = clone $obj; $clone->isNewRecord = true; unset($clone->competition_id); // i want to remove this so it is auto inserted instead via the db $clone->save(); 

Esto funciona muy bien: cómo podría modificar esto en una “colección” de premios y hacer que se duplique en la base de datos mientras establezco mi propio valor de ‘competition_id’.

Nota: soy nuevo para Yii, por lo tanto, avíseme si he cometido errores obvios / mala práctica

La clonación no funcionará. Debe asignar los atributos a un nuevo objeto:

 $obj = Competitions::model()->find('competition_id=:competition_id', array(':competition_id' => $post['competition_id'])); $clone = new Competitions; $clone->attributes = $obj->attributes; $clone->save(); 

¿Qué tal (syntax yii2):

 $model=Competitions::findOne([':competition_id' => $post['competition_id']]); $model->id = null; $model->isNewRecord = true; $model->save(); 

La respuesta para mi problema, aunque Michiel anterior me ayudó, alternativamente, si no le importa agregar otra respuesta, le daré la respuesta aceptada.

 foreach($models as $model) { $clone = new Competitions; $clone->attributes = $model->attributes; $clone->competition_id = '123' // custom var i am setting manually. $clone->save(); }