tp5.1 create update 怎么判断是否操作成功

/**                                                                        
 * 写入数据                                                                    
 * @access public                                                          
 * @param  array      $data  数据数组                                          
 * @param  array|true $field 允许字段                                          
 * @param  bool       $replace 使用Replace                                   
 * @return static                                                          
 */                                                                        
public static function create($data = [], $field = null, $replace = false) 
{                                                                          
    $model = new static();                                                 
                                                                           
    if (!empty($field)) {                                                  
        $model->allowField($field);                                        
    }                                                                      
                                                                           
    $model->isUpdate(false)->replace($replace)->save($data, []);           
                                                                           
    return $model;                                                         
}                                                                          

静态调用的create update 操作起来确实很方便,但是操作数据库以后怎么判断是否操作成功呢?查看代码并没有返回操作成功与否,在操作完成后会返回这个操作的模型对象。

  1. 经测试操作失败或者屏蔽 m o d e l − > i s U p d a t e ( f a l s e ) − > r e p l a c e ( model->isUpdate(false)->replace( model>isUpdate(false)>replace(replace)->save($data, []); 这一段代码,返回的模型对象是空的,操作成功的话可得到这个模型对象的属性和方法,由此可通过判断返回的模型对象是否为空来判断是否操作成功?事实证明行不通的,仔细阅读代码可知在checkBeforeSave数据已经预加载到了模型中。
  2. create update 这几个静态方法都未曾返回影响行数,但是我们可以通过获取返回或者影响的记录数来判断是否操作成功呀,上代码
try {
                Db::transaction(function ()use ($param) {
                    //企业
                    $company = CompanyModel::update(array_slice($param, 0, 5, true));
                    if (!$company->getNumRows()){
                        throw new \Exception('更新企业失败了',1003);
                    }
                    $compay_app = $company->companyApp()->find();
                    
                    //应用
                    $app_data = [
                        'id'    => $compay_app->id,
                        'app_id'=>$param['app_id'],
                        'app_secret'=>$param['app_secret'],
                        'app_name'  => substr($param['corpid'], 0,20),
                    ];
                    
                    $app = AppSettingModel::update($app_data);
                    if (!$app->getNumRows()){
                        throw new \Exception('更新企业信息失败了',1003);
                    }
                });
            } catch (\Exception $e) {
                return json(['code' => 1002, 'msg' => '修改企业失败'.$e->getMessage()]);
            }

获取到没有影响行数后,通过手动抛出异常来回滚事务操作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值