#laravel #authentication
Вопрос:
Я использовал аутентификацию Auth::Guard, но получил ошибку преобразования, вот мой код в файле контроллера:
const ALL_GUARD = ['admin'];
public function guard()
{
return Auth::guard('admin');
}
function login(Request $request)
{
$dataLogin = $request->only(['email', 'password']);
// dd($dataLogin);
// error here
foreach (self::ALL_GUARD as $guard) {
if (Auth::guard('admin')->attempt($dataLogin)) {
return redirect('/'.$guard.'/home');
}
}
// }
return redirect('/login');
}
public function showLoginForm()
{
return view('auth.login');
}
и файл модели:
<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
use IlluminateNotificationsNotifiable;
use IlluminateContractsAuthMustVerifyEmail;
use IlluminateFoundationAuthUser as Authenticatable;
class UserModel extends Authenticatable
{
use Notifiable;
protected $guard = 'admin';
protected $table = ['users','post'];
protected $fillable = ['name','email','password'];
protected $hidden = ['password', 'remember_token',];
}
Ошибка:
ErrorException (E_NOTICE)
Array to string conversion
Что я сделал не так? Где-то он был неисправен, пожалуйста, помогите мне! Спасибо!
Комментарии:
1. поскольку модель специфична для одной таблицы, вы
$table
по какой-то причине задали ее в виде массива … где в документации вы видели, чтобы эта переменная была задана в виде массива? также вам следует предоставить дополнительную информацию об ошибках, таких как трассировка стека
Ответ №1:
в модели должно быть одно имя таблицы. пожалуйста, удалите массив и сделайте его строкой, или вы можете проверить документацию по модели Laravel для получения дополнительных разъяснений.
<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
use IlluminateNotificationsNotifiable;
use IlluminateContractsAuthMustVerifyEmail;
use IlluminateFoundationAuthUser as Authenticatable;
class UserModel extends Authenticatable
{
use Notifiable;
protected $guard = 'admin';
protected $table = 'users'; //change this variable type
protected $fillable = ['name','email','password'];
protected $hidden = ['password', 'remember_token',];
}
или, пожалуйста, предоставьте правильное описание ошибки.