Как сопоставить входное значение в Laravel match перед сохранением в базе данных sqlite

#database #laravel #try-catch #response

#База данных #laravel #попробуйте-поймайте #ответ

Вопрос:

Я пытаюсь сделать так, чтобы значение $input data сначала совпадало с одним из значений массива выборки в пользовательской таблице в базе данных перед сохранением ввода и получением ответа «будет дано совпадение». Я пытаюсь установить эти проверки в 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);
        }

    }
 

Ответ №1:

просто получите весь объект user с помощью Auth:user нет необходимости в операторе pluck, вы можете получить доступ к значениям напрямую через user object,

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

Если вы хотите сопоставить номера телефонов всех пользователей,

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

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

 

Комментарии:

1. Я хочу сопоставить введенный номер телефона со всеми телефонными номерами, уже имеющимися в базе данных. Вот почему я извлек массив phone, чтобы сопоставить его со списком массивов.

2. что вы получаете в объекте $users, есть ли какая-либо ошибка.

3. попробуйте это $users = User::where(‘phone’,»=», $input)->get();

4. также проверьте, правильно ли получены входные значения и в том же формате, что и в базе данных

5. попробуйте $request->input_number