這是 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"
hljs-variable">$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
但資料庫中沒有任何更新
uj5u.com熱心網友回復:
首先,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->update();
} 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');
}
uj5u.com熱心網友回復:
$user->save();你不應該呼叫$user->update();
另外,你可以呼叫$user->update(['is_active'=>1]);只有一行代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/442149.html
