ホームページ > バックエンド開発 > PHPチュートリアル > Yii2 ActiveRecord save()方法问题

Yii2 ActiveRecord save()方法问题

WBOY
リリース: 2016-06-06 20:23:18
オリジナル
1726 人が閲覧しました

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

<code>// 新建一条记录
$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()) {
    // 获取用户输入的数据,验证并保存
}</code>
ログイン後にコピー
ログイン後にコピー

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

<code>$model = new Customer();
$model->id = 100;
.....</code>
ログイン後にコピー
ログイン後にコピー

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

回复内容:

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

<code>// 新建一条记录
$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()) {
    // 获取用户输入的数据,验证并保存
}</code>
ログイン後にコピー
ログイン後にコピー

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

<code>$model = new Customer();
$model->id = 100;
.....</code>
ログイン後にコピー
ログイン後にコピー

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

Yii中文官网答案

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート