laravel "SQLSTATE [HY000]: общая ошибка: 1 такой таблицы нет: пользователь", но таблица "пользователи" существует - PullRequest
0 голосов
/ 18 мая 2018

Я использую Laravel 5.2 в Windows 8.1, используя XAMPP с php 7.2, и пытаюсь зарегистрировать пользователя, используя форму регистрации авторизации laravel в базе данных sqlite.Однако, когда я пытаюсь вставить новую запись в таблицу users, я получил ошибку.

SQLSTATE [HY000]: Общая ошибка: 1 нет такой таблицы: пользователь

Когда яПеренос базы данных создает таблицу пользователей.Но когда я пытаюсь вставить новую запись в users таблицу с формой регистра, он пытается получить доступ к user таблице.Поэтому я создал таблицу user в базе данных, она работает нормально, но запись вставлена ​​в таблицу users, а не в таблицу user.

Миграция

public function up(){
    Schema::create('users', function (Blueprint $table) {
        $table->increments('user_id');
        $table->string('name');
        $table->string('role');
        $table->string('username');
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
        });
    }

public function down(){
    Schema::drop('users');
}

Модель пользователя

class User extends Authenticatable{
    protected $primaryKey = 'user_id';

    protected $fillable = [
        'name', 'role', 'username', 'password',
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];
}

AuthController

namespace App\Http\Controllers\Auth;

use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;

class AuthController extends Controller{

    use AuthenticatesAndRegistersUsers, ThrottlesLogins;

    protected $redirectTo = '/';
    protected $username = 'username';

    public function __construct()
    {
        $this->middleware($this->guestMiddleware(), ['except' => 'logout']);
    }

    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|max:255',
            'role' => 'required|max:7',
            'username' => 'required|unique:user',
            'password' => 'required|min:6|confirmed',
        ]);
    }

    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'role' => $data['role'],
            'username' =>$data['username'],
            'password' => bcrypt($data['password']),
        ]);
    }
}

спасибо за помощь и извините за плохой английский.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Ваша проблема в проверке:

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => 'required|max:255',
        'role' => 'required|max:7',
        'username' => 'required|unique:user',
        'password' => 'required|min:6|confirmed',
    ]);
}

Вы проверяете, является ли имя пользователя уникальным в user, а не users, попробуйте это:

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => 'required|max:255',
        'role' => 'required|max:7',
        'username' => 'required|unique:users,username',
        'password' => 'required|min:6|confirmed',
    ]);
}

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

0 голосов
/ 18 мая 2018

Пожалуйста, обратитесь к этому: https://laravel.com/docs/5.6/eloquent#eloquent-model-conventions

Если у вас есть модель Пользователь, то в вашей базе данных должна быть таблица «пользователи», а не «пользователь».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...