Dupliquer un AR enregistrement & re-insérer dans la base de données
J'ai un modèle AR que je suis en train de dupliquées, mais juste besoin de changer manuellement la clé étrangère.
$_POST['competition_id'] = 99;
$prizes = CompetitionPrizes::model()->findAll('competition_id =:competition_id',array(':competition_id'=> $_POST['competition_id']));
Cette requête essentiellement les requêtes les prix de table et obtient toutes les lignes pour une compétition en particulier. Avec le prix de l'objet, je voudrais essentiellement ré-insérer/dupliquer la même information, à l'exception de la concurrence id qui je veux définir manuellement.
J'ai fait quelque chose de similaire pour un AR objet qui, fondamentalement, n'a qu'une ligne et qu'il travaillait bien, cependant dans ce cas, tant que la compétition peut avoir plus d'un prix de ce même code ne sera pas.
//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();
Cela fonctionne très bien - comment puis-je modifier cela sur une collection de prix cette dupliqué dans la base de données, tandis que la configuration de mon propre " competition_id valeur.
- Je suis à nouveau à Yii, de sorte s'il vous plaît laissez-moi savoir si j'ai fait toutes les erreurs manifestes/mauvaises pratiques
Vous devez vous connecter pour publier un commentaire.
Le clonage ne fonctionne pas. Vous devez assigner les attributs d'un nouvel objet:
foreach($models as $model) { $clone = new Competitions; $clone->attributes = $model->attributes; $clone->save(); }
$clone->attributes = $obj->attributes;
vous affectez des valeurs uniquement à la sécurité des attributs (http://www.yiiframework.com/doc/api/1.1/CModel#setAttributes-detail)Comment sur (yii2 syntaxe):
La réponse à mon problème, bien que Michiel ci-dessus m'a aidé - alternativement, si vous n'avez pas l'esprit en ajoutant une autre réponse, je vais vous donner la accepté de répondre.
Si plus génériques, chemin de la duplication d'un Modèle /ActiveRecord dans Yii2 Cadre est requis, vous pouvez utiliser cette solution:
GitHub question de discussion au sujet de dupliquer les modèles: https://github.com/yiisoft/yii2/issues/7544#issuecomment-77158479