未找到基准表或视图:1146表Laravel 5

时间:2015-05-11 03:32:03

标签: php mysql laravel

当我尝试使用Laravel 5将数据保存到mysql时出现此错误,其他表单和save()方法工作正常但是这个:

public function store(CotFormRequest $request)
    {    
        $quote = new Cotizacion;
        $quote->customer_id = Input::get('data.clientid');
        $quote->total = Input::get('data.totalAftertax');    
        $quote->save();    
    }

这是我的Controller存储方法:

<?php namespace App\Models\Cotizacion;

use Illuminate\Database\Eloquent\Model;


class Cotizacion extends Model {

}

这是我的模特:

    self.navigationController.navigationBar.barTintColor = [UIColor redColor];

我必须忽视一些非常明显的事情,因为我无法理解为什么Laravel会添加一个&#34; S&#34;该表是cotizacion而不是cotizacions。

我该如何解决这个问题?

8 个答案:

答案 0 :(得分:82)

我猜Laravel无法确定您用于表名的复数形式。

只需在模型中指定您的表格:

class Cotizacion extends Model{
    public $table = "cotizacion";

答案 1 :(得分:6)

我在laravel 5.2中也遇到了这个问题,如果声明表名不起作用,可能是因为你在Request中的验证代码中有一些错误的声明或错误(如果你使用的话)

答案 2 :(得分:5)

检查您的迁移文件,也许您正在使用Schema :: table,如下所示:

Schema::table('table_name', function ($table)  {
    // ...
});

如果要创建新表,则必须使用Schema :: create:

Schema::create('table_name', function ($table)  {
    // ...
});

答案 3 :(得分:1)

只需运行命令:

php artisan migrate:refresh --seed

答案 4 :(得分:0)

如果您的错误与

问题无关
  

Laravel无法确定您所用单词的复数形式   表名。

this solution

仍然有此错误,请尝试我的方法。您应该在默认的“ AppServiceProvider.php” 中找到问题或其他 专门为该应用程序定义的服务提供商,或者甚至在App \ Console

中的 Kernel.php 中定义的服务提供商

这个错误对我来说是偶然的,我暂时解决了它,但仍然无法弄清确切的来源和描述。

在我的情况下,导致我的表无法迁移的主要问题是我在boot()方法的“ PermissionsServiceProvider.php” 上运行了代码/查询。

以同样的方式,也许您在 AppServiceProvider.php 的boot()方法或Kernel.php

中定义了一些内容

因此,首先检查您的Serviceproviders并禁用一段时间,然后运行php artisan migration,然后撤消代码中的更改。

答案 5 :(得分:0)

在执行php artisan migration:refresh --seed命令后,执行迁移=>时我也遇到了这个问题

“找不到基本表或视图:1146表帖子不存在” 我解决了这个问题,我在一个单独的迁移文件中使用了“软删除”,并且在数据库中的“软删除”迁移之后,负责创建“ posts”表的“ posts”表的原始迁移正在执行\迁移文件夹,我只需要重命名“ posts”迁移文件名,并将其放在“ softdeletes”迁移之前即可执行。 再次进行迁移=> php artisan migration:refresh --seed 完成。

答案 6 :(得分:0)

当您在controller方法中传递自定义请求时,并且您的请求文件未遵循正确的语法或表名已更改,请通过这种类型的laravel。我将在示例中向您展示。

My Request code.
     public function rules()
        {
            return [
                'name' => 'required|unique:posts|max:50',
                'description' => 'required',
            ];
        }

But my table name is todos not posts so that's why it through "Base table or view not found: 1146 Table Laravel 7


    I forgot to change the table name in first index.
     public function rules()
        {
            return [
                'name' => 'required|unique:todos|max:50',
                'description' => 'required',
            ];
        }

答案 7 :(得分:0)

由于拼写错误未定义的数据库名称,导致出现此问题。确保您的数据库名称,表名称和所有列名称与phpmyadmin中的相同。

谢谢