save () 和 update () 为什么不需要判断操作成功与否?

save
update

我的问题是,为什么在$image->save()$user->update()不判断一下?比如

<?php
if ($image->save()) {
// 成功的处理
...
} else {
// 失败的处理
...
}

if ($user->update() !== false) {
// 成功的处理
...
} else {
// 失败的处理
...
}

因为我看save()update()都会有返回false的情况,如果说教程专注点不在这里确实,但我很想知道大家的线上项目难道都这样处理的吗?如果说是一些不那么重要的数据,在追求代码优雅上确实可以这么做,但是如果遇到像订单系统,或者其他必须保证可知操作成功或失败的情况,大家是怎么处理的?

来自广州的漂流瓶
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
liyu001989
最佳答案

save 或 update 返回 false 的情况是: listener 监听模型的 saveing updating 等事件的时候,有额外的判断并返回了 false。我们并没有地方监听这些事件,所以不需要主动判断。

数据库连接或者异常的情况,都会抛出异常,接口需要返回 500 错误,我们不需要手动处理这个异常,DingoApi 处理了这些异常,会返回 500错误。

楼上举得例子不存在,接口不可能返回 200,但是数据没有保存成功。关注应该是个 put 请求,不应该点击两次,第二次返回false,请求多少次,都因该返回成功。

6年前 评论
讨论数量: 3

我举个栗子给你听听:
例如有一次我用某直播软件,点了关注,它提示我关注成功,可是我刷新一看,还是没有。
这时候你就可以报故障,然后提交工单,让工程师处理。


而你点了关注,提示关注失败,然后你就不想点关注了,也不提交工单了。

6年前 评论

当然这只是我的想法而已,因为好久没写这个判断了。
看了一下 save 的方法,只有在事件处理过程中才会返回 false,比如,你双击了两次关注,然后第一次还没执行完成,第二次就到达了。第二次就返回 false。第一次执行完成之后也能修改成功了。

6年前 评论
liyu001989

save 或 update 返回 false 的情况是: listener 监听模型的 saveing updating 等事件的时候,有额外的判断并返回了 false。我们并没有地方监听这些事件,所以不需要主动判断。

数据库连接或者异常的情况,都会抛出异常,接口需要返回 500 错误,我们不需要手动处理这个异常,DingoApi 处理了这些异常,会返回 500错误。

楼上举得例子不存在,接口不可能返回 200,但是数据没有保存成功。关注应该是个 put 请求,不应该点击两次,第二次返回false,请求多少次,都因该返回成功。

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!