我正在尝试保存新创建的 yii 模型两次 - 第一次是获得自动递增的 id。第二次保存与ID相关的东西:
$node = new Node;
$node->attributes = $attrs;
$node->save(); // now I have 'id'
$node->vector = calcVector($node->id); // vector is based on 'id'
$node->save();
第二次保存(编辑:错误被抛出到其他地方)抛出此错误:Integrity constraint violation: 1062 Duplicate entry
。预期的行为是简单地更新已保存的模型。
第二次保存的正确方法是什么?
(我可以做$node = Node::model()->findByPk($node->id);
,但这似乎不对)
刚刚设置
$node->isNewRecord = false;
然后
$node->save();
干杯
呃,所以显然问题不在于我上面描述的内容。
保存两次按预期工作 - 第一次呼叫插入,第二次呼叫更新。
问题可能是我正在将模型保存在beforeSave()
.我在那里有一个复杂而混乱的逻辑,没有意识到发生了什么。
我遇到了一些类似的情况,我需要多次将模型保存到数据库。我通过在保存模型后简单地实例化模型来实现它:
foreach ($partsIdArray as $id)
{
$model->load(Yii::$app->request->post()); // loading form values
$model->part_id = $id;
$model->save();
$model = new backendmodelsAbc();
}