Я уже некоторое время слоняюсь по Интернету и не могу найти ответ на свой вопрос, поэтому задаю его здесь.
Я хочу аутентифицировать пользователей для входано это должно быть сделано с информацией из двух отдельных таблиц.
Я отправляю значения на свой контроллер: значок и пароль. Я получаю к ним доступ с помощью
$request->badge (note: This is the account id)
$request->password (note: this is the users password)
Ранее я пробовал следующее:
public function store(Request $request)
{
$request->validate([
'badge' => 'required|int',
'password' => 'required|string',
]);
$account = Account::select('id', 'user_id')->where('id', $request->badge)->first();
if(!$account)
return back()->withInput()->withErrors(['password' => 'Incorrect badge or password!']);
else
{
if(Auth::attempt(['username' => $accounts->user->username, 'password' => $request->password]))
{
return redirect()->route('home');
}
else
{
return back()->withInput()->withErrors(['password' => 'Incorrect badge or password!']);
}
}
}
Это войдет в систему пользователя, однако, когда я использую Auth :: id (), он возвращает идентификатор пользователя, а не учетной записи.
пример: $ request-> значок заполнен 25 (который является идентификатором учетной записи), идентификатор пользователя равен 1. Auth :: id возвращает 1 вместо моего желаемого 25.
Моя таблица выглядит следующим образом:
users
----
id
username
email
password
accounts
-----
id
user_id
name
У меня есть отношения в аккаунтах и пользователях, чтобы связать их вместе
public function accounts()
{
return $this->hasMany(Accounts::class, 'user_id', 'id');
}
public function user()
{
return $this->belongsTo(User::class, 'id', 'user_id');
}
Я хочу, чтобы auth :: id дал мне 25 вместо 1.