Я замечаю только пару проблем.
url: "users/" + $('#update-policy').attr("value"),
В URL-адресе вызова ajax у вас нет косой черты в начале, поэтому URL будет относительно URL-адреса страницы. где находится функция, а не базовый URL. чтобы решить эту проблему, просто добавьте эту косую черту в начале
url: "/users/" + $('#update-policy').attr("value"),
Другой способ заключается в том, что у вас есть вход с методом put,
<input type="hidden" name="_method" value="put" />
, поэтому следует указать маршрут Laravel (это имеет смысл, если принять во внимание, что это маршрут для обновления)
Route::put('users/{user}','TeachersController@policyupdate') ;
Ну и, как вы сами обнаружили, с помощью построителя запросов метод update()
работает, если вы запрашиваете с where()
вместо find()
$user = DB::table('users')->where('id', $id)->update( $request->all() );