如何在保存到 sqlite 数据库之前匹配 Laravel 匹配中的输入值

How to match an input value in Laravel match before saving to sqlite database

我正在尝试使 $input 数据的值首先与数据库中用户 table 中的一个 pluck 数组值匹配,然后再保存输入并响应 'its a match be given' .我试图将这些检查放在我正在制作的 API 上。我是 laravel API 的新手,非常感谢您的帮助。谢谢

public function create(Request $request)
    {
        //
        $this->validate($request, [
            'inputed_number' => 'required|unique:users',
            'user_id' => 'required'
        ]);

        try {
            Auth::user();
            $phonenumber = new PhoneNumber();
            $phonenumber->inputed_number = $request->inputed_number;
            $phonenumber->user_id = $request->user_id;
            
            if($this->user->phonenumber()->save($phoneuumber)){
        $user = User::all();
        $input = $request->only('inputed_number');
        $user_number = $user->pluck('phone');
        foreach ($input as $phone) {
             if ($phone !== $user_number) {
                return response()->json([
                    'success' => false,
                    'message' => 'Invalid number',
                    'data' => $phone,
                ], Response::HTTP_UNAUTHORIZED);
            }

            return response()->json([
                    'success' => true,
                    'message' => 'Its a match!!',
                    'data' => $phone,
            ]);
        }
    }
        } catch (\Exception $e) {
            return response()->json([
                'success' => false,
                'message' => 'You have already inputted this number.',
            ], Response::HTTP_UNAUTHORIZED);
        }

    }

只需使用 Auth:user 获取整个用户对象,无需 pluck 语句,您可以直接通过用户对象访问值,

$user = Auth:user();
 $input = $request->only('inputed_number');
if($user->phone !== $input ) {
   //perform this code
}

如果您想匹配来自所有用户的 phone 个号码,

//get all users where phone number matches
$users = User::where('phone', $input)->get();

// iterate through $users rows
foreach ($users as $user) {
    ///do some thing
}