首页 > 解决方案 > Laravel 查找不存在的表

问题描述

我是 PHP 新手。我制作了一个名为的表,tbl_users但由于某些原因,我无法理解 laravel 正在尝试其他一些名为users.

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'raydb.users' doesn't exist

我的迁移代码看起来像这样,在播种机中也是如此。just 的用法users无处可去。

public function up()
{
    Schema::create('tbl_users', function (Blueprint $table) {
        $table->id();
        $table->string('Name');
        $table->string('Email')->unique();
        $table->string('Password');
        $table->timestamps();
    });
}

我做了一个新的控制器,它试图调用它看起来像这样的表

function login(Request $req){
    return User::where(['email'=>$req->email])->first();
}

我真的找不到调用表或 SQL 的其他地方...我tbl_Users在 MySQL 中看到了表,并且里面的所有内容都带有正确的登录名密码等。我不明白 laravel 在哪里调用了一个名为users

标签: phpmysqllaravel

解决方案


Laravel 使用约定让你的生活更轻松。其中一个约定是 Laravel 假设你的表名是模型名的复数。您应该阅读文档以获取更多信息。

您在User幕后使用了一个名为 so 的模型,Laravel 正在使用它的约定并users在您的数据库中查找一个名为的表。如果要覆盖与模型关联的表的名称,则需要在模型上指定表名称。

class User extends Model
{
  protected $table = 'tbl_users';
}

理想情况下,除非您有特定的理由不这样做,否则建议坚持 Laravel 表命名约定。从长远来看,这将使您和他人的生活更轻松。


推荐阅读