使用save保存,并判断是否保存成功的代码
xuexi 2025-10-06 00:50:48 发表在:PHP 查看数:48
namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Log;

class UserController extends Controller
{
    public function store(Request $request)
    {
        // 数据验证
        $validated = $request->validate([
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:8',
        ]);

        try {
            // 实例化模型
            $user = new User();

            // 给模型属性赋值
            $user->name = $validated['name'];
            $user->email = $validated['email'];
            $user->password = Hash::make($validated['password']);

            // 保存数据并判断是否成功
            if ($user->save()) {
                // 保存成功
                Log::info('用户创建成功', ['user_id' => $user->id, 'email' => $user->email]);
                return redirect()->route('users.index')
                    ->with('success', '用户创建成功,ID:' . $user->id);
            } else {
                // 保存失败
                Log::error('用户创建失败', ['data' => $validated]);
                return back()
                    ->withInput()
                    ->with('error', '用户创建失败,请稍后重试');
            }
        } catch (\Exception $e) {
            // 捕获异常(如数据库错误等)
            Log::error('用户创建过程中发生错误', [
                'error' => $e->getMessage(),
                'data' => $validated
            ]);
            return back()
                ->withInput()
                ->with('error', '系统错误:' . $e->getMessage());
        }
    }
}

使用接口返回的方法

namespace App\Http\Controllers\Api;

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Log;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * 保存用户数据并返回API响应
     * 
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function store(Request $request)
    {
        try {
            // 数据验证(验证失败会自动返回422状态码的JSON响应)
            $validated = $request->validate([
                'name' => 'required|string|max:255',
                'email' => 'required|string|email|max:255|unique:users',
                'password' => 'required|string|min:8',
            ]);

            // 实例化模型并赋值
            $user = new User();
            $user->name = $validated['name'];
            $user->email = $validated['email'];
            $user->password = Hash::make($validated['password']);

            // 保存数据并判断结果
            if ($user->save()) {
                // 保存成功:返回201状态码(资源创建成功)
                return response()->json([
                    'status' => true,
                    'message' => '用户创建成功',
                    'data' => [
                        'user_id' => $user->id,
                        'name' => $user->name,
                        'email' => $user->email,
                        'created_at' => $user->created_at
                    ]
                ], 201); // 201 Created
            } else {
                // 保存失败:返回400状态码(请求错误)
                Log::warning('用户保存失败', ['data' => $validated]);
                return response()->json([
                    'status' => false,
                    'message' => '用户创建失败,请检查数据',
                    'data' => null
                ], 400); // 400 Bad Request
            }

        } catch (\Exception $e) {
            // 捕获异常:返回500状态码(服务器错误)
            Log::error('用户创建接口异常', [
                'message' => $e->getMessage(),
                'trace' => $e->getTraceAsString(),
                'data' => $request->all()
            ]);

            return response()->json([
                'status' => false,
                'message' => '服务器内部错误',
                'error' => env('APP_DEBUG', false) ? $e->getMessage() : null // 调试模式显示错误详情
            ], 500); // 500 Internal Server Error
        }
    }
}
最近访问时间:2025-10-14 15:42:00
知识库:388条鸣谢:TAY  备案号:蜀ICP备2024090044号-1