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

Я использовал аутентификацию 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 App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User 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

Что я сделал не так? Он где-то был неисправен, пожалуйста, помогите мне! Спасибо!

Поскольку Модель специфична для одной таблицы, по какой-то причине у вас есть $table, установленный как массив ... где в документации вы видели, что эта переменная установлена ​​как массив? также вы должны предоставить дополнительную информацию об ошибках, например, трассировку стека

lagbox 05.04.2021 07:09
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
1
31
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

в модели должно быть одно имя таблицы. пожалуйста, удалите массив и сделайте его строкой, или вы можете проверить документацию модели Laravel для получения дополнительных разъяснений.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User 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',];

}

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

Другие вопросы по теме