#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