thinkphp 新增为啥不用判断是否成功
我看到挺多代码都是
$order = new Order();
$res = $order->saveAll($lst);
获取
Order::create($lst)
并没有有类似这样的
$res=Order::create($lst)
if(!$res->id) 提示错误
有没必要增加这个判断呢 还是tp他会默认做了呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
错误还是要进行处理的,只是你们开发比较乐观,觉得不会出错,并没有捕获错误
先回答你第一个问题:有没必要增加这个判断呢?
这个问题,其实看一下源码就知道(TP版本5.0.22)
就你举例的这个create方法而言,主要代码是在
/thinkphp/library/think/Model.php
/thinkphp/library/think/db/Query.php
/thinkphp/library/think/db/Connection.php
三个文件中
最终的执行方法是Connection.php文件里的
excute
方法,代码如下:可以看到在插入操作数据库代码的外面加了一层
try catch
的异常捕获,并且抛出了异常由此,可以得到,你上面说的这种处理
其实也可以,但是非必要。加了是更严谨
一旦数据库操作报错,TP5源码中会直接抛出异常出来,你可以在模型操作外面加一层try catch捕获异常即可:
第二个问题:tp有没有做这种判断呢?
答案是有,可以看
/thinkphp/library/think/db/Query.php
文件的insert
方法,代码片段:可以看到它也有处理,通过
getLastInsID()
方法获取最后一次的插入id,会把id放在你上面$res = Order::create($lst)
中的$res变量中,所以你在后面加一步!$res->id
的判断也是可以的你应该有答案了吧~
一般验证器验证通过了,新增这里是不会报错的,所以你看到的大部分都是没有在这里做判断。
再者,这里判断的意义其实不大,万一真的出现错误了,除了记录日志方便程序员回头排查,在用户体验上,没什么帮助。(只能显示类似:页面错误,请稍后再试,或系统异常,请联系管理员)
所以综合考量,一般也就懒得去做了,毕竟项目是需要赶时间的。