无法更新 laravel 中的一个字段
couldn't update one field in laravel
这是web.php中的路线:
Route::put('/users.status', [\App\Http\Controllers\dashboard\UsersController::class, 'status'])->name('users.status');
控制器中的代码如下:
public function status(User $user) {
try{
$user->is_active = 1;
$user->update();
//$user->update(['is_active' => 1 ]);
}catch (\Exception $ex) {
return redirect()->route('users.index')->with('status', "you couldn't update this record");
}
return redirect()->route('users.index')->with('status', 'User Updated successfully');
}
这是视图中的代码,它只是一个按钮,单击它时,我需要更改状态:
<td class="border px-4 py-2">
<form method="POST" action="{{route('users.status', $user)}}">
@csrf
<input type="hidden" name="_method" value="put"/>
<button type="submit"
class="{{ $user->is_active==1 ? "bg-green-500" : "bg-red-500" }} hover:bg-red-700 text-white font-bold py-1 px-1 rounded">
{{$user->is_active==1 ? "Active" : "Inactive"}}
</button>
</form>
</td>
点击上面的按钮后,给我这条消息:
User Updated successfully
但数据库中没有任何更新
首先,您要 User
从路由到控制器方法中获取哪个?您正在尝试将 User $user
对象注入控制器方法,但您没有在路由定义中指定 user
参数。
以及更新部分;设置 $user->is_active = 1;
后,您需要 运行 $user->save();
所以;您需要在路线中添加 user
参数:
Route::put('/users/{user}/status', [\App\Http\Controllers\dashboard\UsersController::class, 'status'])->name('users.status');
和 运行 save()
方法更新 $user
;
public function status(User $user)
{
try {
$user->is_active = 1;
$user->save();
} catch (\Exception $ex) {
return redirect()->route('users.index')->with('status', "you couldn't update this record");
}
return redirect()->route('users.index')->with('status', 'User Updated successfully');
}
你应该叫 $user->save();
而不是 $user->update();
另外,你可以调用$user->update(['is_active'=>1]);
只用一行代码。
这是web.php中的路线:
Route::put('/users.status', [\App\Http\Controllers\dashboard\UsersController::class, 'status'])->name('users.status');
控制器中的代码如下:
public function status(User $user) {
try{
$user->is_active = 1;
$user->update();
//$user->update(['is_active' => 1 ]);
}catch (\Exception $ex) {
return redirect()->route('users.index')->with('status', "you couldn't update this record");
}
return redirect()->route('users.index')->with('status', 'User Updated successfully');
}
这是视图中的代码,它只是一个按钮,单击它时,我需要更改状态:
<td class="border px-4 py-2">
<form method="POST" action="{{route('users.status', $user)}}">
@csrf
<input type="hidden" name="_method" value="put"/>
<button type="submit"
class="{{ $user->is_active==1 ? "bg-green-500" : "bg-red-500" }} hover:bg-red-700 text-white font-bold py-1 px-1 rounded">
{{$user->is_active==1 ? "Active" : "Inactive"}}
</button>
</form>
</td>
点击上面的按钮后,给我这条消息:
User Updated successfully
但数据库中没有任何更新
首先,您要 User
从路由到控制器方法中获取哪个?您正在尝试将 User $user
对象注入控制器方法,但您没有在路由定义中指定 user
参数。
以及更新部分;设置 $user->is_active = 1;
后,您需要 运行 $user->save();
所以;您需要在路线中添加 user
参数:
Route::put('/users/{user}/status', [\App\Http\Controllers\dashboard\UsersController::class, 'status'])->name('users.status');
和 运行 save()
方法更新 $user
;
public function status(User $user)
{
try {
$user->is_active = 1;
$user->save();
} catch (\Exception $ex) {
return redirect()->route('users.index')->with('status', "you couldn't update this record");
}
return redirect()->route('users.index')->with('status', 'User Updated successfully');
}
你应该叫 $user->save();
而不是 $user->update();
另外,你可以调用$user->update(['is_active'=>1]);
只用一行代码。