Yii 2.0 数据保存的心得(model->save)

之前在使用yii 2.0的时候,我的数据新增是这样的,都是写在了controller里面

xxxController.php

$data = Yii::$app->request->post();

if (empty($data['id'])) {
	$model = new Model();
	//补充新增的时候需要的数据,例如addtime,status
} else {
	//补充更新的时候需要的数据,例如update
	$model = Model::findOne($data['id']);
}
$model->attributes = $data;
if ($model->validate()) {
	if ($model->save()) {
		return true;
	}
} else {
	return false;
}

这样我就必须在每一个数据新增的时候都写数据的补充,这些代码都是重复的,而且写在controller里面是十分不好的

后面发现了如果我写在model里面,会有不错的效果

xxxModel.php


public function beforeSave($insert) {
	if (parent::beforeSave($insert)) {
		if ($this->isNewRecord) {
			$this->add_time = date('y-m-d H:m:s');
			$this->status = 1;
		} else {
			$this->update_time = date('y-m-d H:m:s');
		}
		return true;
	} else {
		return false;
	}
}

我只要调用到这里这这个方法,就会在save的时候触发上面的beforeSave,这样就可以完成数据的填充,而且是在数据验证以后再填充,而且最重要的一点,我如果把这些都写在了一个公共的model里面,只有我有数据填充并且是一样的,我就都不用写的,直接用就可以了
public function dataSave($data) {
	$this->load($data, '');
	if ($this->validate()) {
		if ($this->save()) {
			return ['code' => '1', 'msg' => '保存成功'];
		}
	} else {
		return ['code' => '0', 'msg' => $this->getFirstErrorsMessage()];
	}
	return ['code' => '0', 'msg' => '保存失败'];
}

转载于:https://my.oschina.net/gcdong/blog/1120364

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值