1

我正在尝试两次保存新创建的 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);,但这似乎不对)

4

3 回答 3

1

刚刚设置

$node->isNewRecord = false;

然后

$node->save();

干杯

于 2013-09-23T13:30:54.297 回答
0

呃,显然问题不在我上面描述的问题上。

保存两次按预期工作 - 第一次调用插入,第二次调用更新。

问题可能是我将模型保存在beforeSave(). 我在那里有一个复杂而令人困惑的逻辑,没有意识到发生了什么..

于 2013-09-23T01:41:35.950 回答
0

我有一个类似的情况,我需要多次将模型保存到数据库中。我通过在保存模型后简单地实例化模型来完成它:

foreach ($partsIdArray as $id)
    {
        $model->load(Yii::$app->request->post()); // loading form values
        $model->part_id = $id;
        $model->save();
        $model = new \backend\models\Abc();
    }
于 2016-02-05T22:30:47.390 回答