Ошибка «Преобразование массива в строку» при использовании аутентификации в laravel

#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',];

}
 

или, пожалуйста, предоставьте правильное описание ошибки.