Yii2 ActiveRecord save()方法问题

RT,之前一直以为 ActiveRecord->save 方法 可以当数据不存在时 insert,存在时update,后来在中文官网上看到了这段文档:

// 新建一条记录

$model = new Customer;

if ($model->load(Yii::$app->request->post()) && $model->save()) {

    // 获取用户输入的数据,验证并保存

}


// 更新主键为$id的AR

$model = Customer::findOne($id);

if ($model === null) {

    throw new NotFoundHttpException;

}

if ($model->load(Yii::$app->request->post()) && $model->save()) {

    // 获取用户输入的数据,验证并保存

}

按照这个逻辑,我现在如果想更新id = 100这条数据信息,如果数据表中没有这条记录,那么$model === null,如此一来,还得先判断,如果为空,实例化一个 $model,然后:

$model = new Customer();
$model->id = 100;.....

感觉这样不够优雅,还是说我对ActiveRecord的理解有问题?


绝地无双
浏览 1975回答 2
2回答

哈士奇WWW

save是按照表的主键来的,如果你传入了主键就是更新,反之则是添加

繁花如伊

Yii中文官网答案
打开App,查看更多内容
随时随地看视频慕课网APP