Auth::user() 踩坑

Auth::user() 获得当前登录用户实例
本以为Auth::user()->where(‘money’,’>=’,’1’)->decrement(‘money’,$amount);是对当前登录用户的减少金额,结果会把数据库所有余额大于等于1的用户都执行一遍。
只能老老实实用where再判断一下id再进行操作

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 9

Auth::user() 返回的是当前登录的用户实例。根据你的描述,代码可以这么组织:

$user = Auth::user();
if($user->money >= 1){
     $user->money = $amount;
     $user->save();
}
3周前 评论

Auth::user() 返回的是当前登录的用户实例。根据你的描述,代码可以这么组织:

$user = Auth::user();
if($user->money >= 1){
     $user->money = $amount;
     $user->save();
}
3周前 评论

第一次见 Auth::user() 能像你这么用,Auth::user() 返回的要么是 Illuminate\Contracts\Auth\Authenticatable 要么是 null

绝对不可能返回一个 QueryBuilder,你这还能 where,大概率用的不是 Illuminate\Support\Facades\Auth 这个 Facade!

3周前 评论
lddtime 3周前
GeorgeKing (作者) 3周前
nff93

看了下源码,在一个模型实例上调用 where 会走 newQuery ,这里只会添加之前的 withwithCount ,除此之外没有其它条件。

另外,我也是第一次见有人这么用。

3周前 评论

更新单行记录用orm吧,看你的写法是thinkphp

3周前 评论

首先模型实例是可以直接 where 的,但是不会自动把模型的主键加入到查询条件中,,,我以前也因为这么想,这么写,搞过 bug,,,

1周前 评论

第一次见到这种写法 :joy:

1周前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
1
粉丝
0
喜欢
0
收藏
0
排名:1815
访问:1010
私信
所有博文
社区赞助商