Laravel在第一次运行后没有增加登录值



每次用户登录时,我都会尝试在数据库中增加一列。如果我注册了用户,它会成功地将计数设置为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,
]);

最新更新