Quantcast
Channel: Active questions tagged rest - Stack Overflow
Viewing all articles
Browse latest Browse all 4051

Laravel 10.48.22 update function not updating data on database

$
0
0

I just learn to create rest api using laravelI have table user, user model and auth controllerThe register and login api running wellWhen I want to update user data (ex: name), the response return success but the data in database not change / updating

Here's my code

<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use Illuminate\Support\Facades\Auth;use Illuminate\Support\Facades\Hash;use Illuminate\Support\Facades\Validator;use App\Models\User;use MatanYadaev\EloquentSpatial\Objects\Point;use Tymon\JWTAuth\Facades\JWTAuth;class AuthController extends Controller{    // Register a new user    public function register(Request $request)    {        $validator = Validator::make($request->all(), ['name' => 'required|string|max:255','email' => 'required|string|email|max:255|unique:users','password' => 'required|string|min:8|confirmed','role' => '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);        }        // Handle image upload        $imagePath = null;        if ($request->hasFile('image')) {            $imagePath = $request->file('image')->store('images', 'public');        }        // Handle location data        $location = null;        if ($request->filled('latitude') && $request->filled('longitude')) {            $longitude = $request->input('longitude');            $latitude = $request->input('latitude');            $location = new Point($longitude, $latitude);        }        // Create the user        $user = User::create(['name' => $request->name,'email' => $request->email,'password' => Hash::make($request->password),'role' => $request->role,'image' => $imagePath,'address' => $request->address,'location' => $location,        ]);        // Generate a JWT token for the new user        $token = Auth::login($user);        return response()->json(['message' => 'User registered successfully','user' => $user,'token' => $token,        ], 201);    }    // User login    public function login(Request $request)    {        $validator = Validator::make($request->all(), ['email' => 'required|string|email','password' => 'required|string',        ]);        if ($validator->fails()) {            return response()->json(['errors' => $validator->errors()], 422);        }        if (!$token = JWTAuth::attempt($request->only('email', 'password'))) {            return response()->json(['message' => 'Invalid credentials'], 401);        }        return response()->json(['token' => $token,        ]);    }    // User logout    public function logout()    {        Auth::logout();        return response()->json(['message' => 'Successfully logged out']);    }    // Update user profile    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);    }    // Get user details    public function detail($id)    {        $user = User::findOrFail($id);        // Check if the authenticated user is allowed to see this user's details        if (Auth::user()->role !== 'admin'&& Auth::id() !== $user->id) {            return response()->json(['message' => 'Unauthorized'], 403);        }        return response()->json($user);    }    // Search for users    public function search(Request $request)    {        // Validate the search query        $validator = Validator::make($request->all(), ['query' => 'nullable|string|max:255','role' => 'nullable|string|in:user,admin',        ]);        if ($validator->fails()) {            return response()->json(['errors' => $validator->errors()], 422);        }        // Get the search query and role from the request        $query = $request->input('query');        $role = $request->input('role');        // Start building the query        $users = User::query();        if ($query) {            $users->where(function ($q) use ($query) {                $q->where('name', 'like', "%$query%")                    ->orWhere('email', 'like', "%$query%");            });        }        if ($role) {            $users->where('role', $role);        }        return response()->json($users->get());    }}

I expect the data in database updating when success update through api


Viewing all articles
Browse latest Browse all 4051

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>