每次用户登录时,我都会尝试在数据库中增加一列。如果我注册了用户,它会成功地将计数设置为0,当他们第一次登录时,计数会增加1,但这就是它停止的地方。之后每次登录时,由于某种原因,数字都会保持在1。
我正在使用将字段添加到数据库中;
$table->integer('login_count')->default(0);
然后我的登录控制器看起来是这样的;
public function login(LoginRequest $request): JsonResponse
{
$data = $request->validated();
if (!Auth::attempt($data)) {
return response()->json(['message' => 'Invalid Credentials'], 401);
}
Auth::user()->update([
'last_login' => now(),
'login_count' => auth()->user()->increment('login_count'),
]);
$token = auth()->user()->createToken('api')->plainTextToken;
return response()->json([
'access_token' => $token,
]);
}
奇怪的是,last_login字段每次都会更新,但login_count从未超过1。
我也试过auth()->user()->login_count++
,但结果仍然一样。
我想不通。
increment()
方法不是";加+1";对于属性,它是一个查询生成器方法,用于启动查询。意味着您运行时
auth()->user()->increment('login_count')
它运行一个查询,将logincount从1更改为2。此方法返回1,因为只更新了一条记录。
则CCD_ 3将login_count设置回1(来自CCD_
将代码更改为
Auth::user()->update([
'last_login' => now(),
'login_count' => auth()->user()->login_count + 1,
]);