在 Yii 中保存模型两次 - 获得“完整性约束冲突:1062 重复条目”


Save model in Yii twice - getting "Integrity constraint violation: 1062 Duplicate entry"

我正在尝试保存新创建的 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 'backend'models'Abc();
    }
相关文章: