Anonymous
Функция обновления Laravel 10.48.22 не обновляет данные в базе данных
Сообщение
Anonymous » 07 окт 2024, 11:21
Я только учусь создавать 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
1728289272
Anonymous
[list] [*]Я только учусь создавать rest API с помощью laravel [*]У меня есть пользователь таблицы, модель пользователя и контроллер аутентификации [*]API регистрации и входа работает хорошо. [*]Когда я хочу обновить данные пользователя (например, имя), ответ возвращает успех, но данные в базе данных не изменяются/обновляются.[/list] Вот мой код [code] 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); } [/code] Я ожидаю обновления данных в базе данных при успешном обновлении через API Подробнее здесь: [url]https://stackoverflow.com/questions/79058460/laravel-10-48-22-update-function-not-updating-data-on-database[/url]