Функция обновления Laravel 10.48.22 не обновляет данные в базе данныхPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Функция обновления Laravel 10.48.22 не обновляет данные в базе данных

Сообщение Anonymous »

  • Я только учусь создавать rest API с помощью laravel
  • У меня есть пользователь таблицы, модель пользователя и контроллер аутентификации
  • API регистрации и входа работает хорошо.
  • Когда я хочу обновить данные пользователя (например, имя), ответ возвращает успех, но данные в базе данных не изменяются/обновляются.
Вот мой код

Код: Выделить всё

 public function update(Request $request, $id)
{
$user = User::findOrFail($id);

// Check if the authenticated user is allowed to update this user
if (Auth::user()->role !== 'admin' && Auth::id() !== $user->id) {
return response()->json(['message' => 'Unauthorized'], 403);
}

// Validate the request data
$validator = Validator::make($request->all(), [
'name' => 'sometimes|required|string|max:255',
'email' => 'sometimes|required|string|email|max:255|unique:users,email,' . $user->id,
'password' => 'sometimes|required|string|min:8|confirmed',
'role' => 'sometimes|required|string|in:user,admin',
'image' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'address' => 'nullable|string|max:255',
'latitude' => 'nullable|numeric|between:-90,90',
'longitude' => 'nullable|numeric|between:-180,180',
]);

if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 422);
}

// Update user fields
if ($request->has('name')) {
$user->name = $request->input('name');
}

if ($request->has('email')) {
$user->email = $request->input('email');
}

if ($request->has('password')) {
$user->password = Hash::make($request->input('password'));
}

if ($request->has('role')) {
$user->role = $request->input('role');
}

if ($request->hasFile('image')) {
$imagePath = $request->file('image')->store('images', 'public');
$user->image = $imagePath;
}

if ($request->has('address')) {
$user->address = $request->input('address');
}

// Handle location data
if ($request->filled('latitude') && $request->filled('longitude')) {
$longitude = $request->input('longitude');
$latitude = $request->input('latitude');
$user->location = new Point($longitude, $latitude);
}

// Save updated user data
$user->save();

return response()->json([
'message' => 'User updated successfully',
'user' => $user,
], 200);
}
Я ожидаю обновления данных в базе данных при успешном обновлении через API

Подробнее здесь: https://stackoverflow.com/questions/790 ... n-database
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»