我在 Laravel 迁移基础视图/表中找不到奇怪的错误 1146

Posted

技术标签:

【中文标题】我在 Laravel 迁移基础视图/表中找不到奇怪的错误 1146【英文标题】:I got strange error in Laravel migration base view/table not found 1146 【发布时间】:2015-05-24 03:37:25 【问题描述】:

我确实使用此迁移文件从 laravel 迁移

    <?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class MsCustomer extends Migration 

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    
        Schema::create('mscustomer', function(Blueprint $table)
        
$table->increments("custid");
            $table->string("custname");
            $table->string("password");
            $table->string("email")->unique();
            $table->integer("balance");
            $table->string("role");
            $table->timestamps();

        );
    

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    
        Schema::drop('mscustomer');
    


然后它成功了,在我的数据库中创建了一个名为“mscustomer”的表,然后我尝试通过调用一个名为 mscustomer.php 的模型来使用 php artisan tinker,它包含

<?php namespace App;

use Illuminate\Database\Eloquent\Model;
class mscustomer extends Model 



然后我得到这个错误 “Illuminate\Database\QueryException with message 'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'twk.mscustomers' doesn't exist......”

什么我看不懂,我明明创建了mscustomer,但是为什么后面找的是“twk.mscustomers”(带's'),而不是twk.mscustomer。在这种情况下我做错了什么吗?

请帮帮我。

注意:很抱歉提问的方式不好,这是我第一次在这里提问。

【问题讨论】:

【参考方案1】:

这就是 Laravel 的工作原理。 Eloquent 将假设模型类名的复数形式作为表名。您可以通过添加属性来覆盖此行为:

class mscustomer extends Model 
    protected $table = 'mscustomer';


此外,使用以大写字母开头的类名也是非常标准的。在你的情况下Mscustomer(或者可能是MsCustomer)而不是mscustomer

【讨论】:

不客气。请accept这个答案将您的问题标记为已解决:)

以上是关于我在 Laravel 迁移基础视图/表中找不到奇怪的错误 1146的主要内容,如果未能解决你的问题,请参考以下文章

创建类别并重定向到 category.index 后,在 laravel 中找不到基表或视图

在 Laravel 5 中找不到类“App\Http\Controllers\Artisan”

我的 Jquery 文件在 laravel 中找不到控制器 [关闭]

在 Laravel 6 中从外键获取数据

在 Laravel 中找不到异常类

Laravel 4在TestCase中找不到测试