Yii2更新条目如果存在

问题描述

先前定义的项目$ title。我想要找到$ find_title的内容,并用$ title中的所有字段进行更新。否则,请创建一个新对象

  $find_title = Title::find()->where(["upc" => $title->upc])->one();
                    if ($find_title != null) {
                        $title->id = $find_title->id;
                        $title->save();
                    } else {
                        $title->save();
                    }

它在幼虫中起作用。

解决方法

$find_title = Title::find()->where(["upc" => $title->upc])->one();
if ($find_title != null) {
    $id = $title->id;
    $find_title->attributes = $title->attributes;
    $find_title->id = $id;
    $find_title->save();
} else {
    $title->save();
}

在这里,您将$title的所有属性分配给$find_title,还原id,然后保存;