web-dev-qa-db-ja.com

ベーステーブルまたはビューが見つかりません:1146テーブルLaravel 5

Laravel 5、他のフォームおよびsave()メソッドを使用してmysqlにデータを保存しようとすると、このエラーが発生しますが、これは次のとおりです。

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'sistemal5.cotizacions' doesn't exist (SQL: insert into `cotizacions` (`customer_id`, `total`, `updated_at`, `created_at`) values (1501, 150.69, 2015-05-11 03:16:25, 2015-05-11 03:16:25))

Controllerストアメソッドは次のとおりです。

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

そして、これが私のモデルです:

<?php namespace App\Models\Cotizacion;

use Illuminate\Database\Eloquent\Model;


class Cotizacion extends Model {

}

Laravelが "S"を追加している理由が理解できない、本当に明らかな原因を見落とす必要があります。テーブルはcotizacionsではなくcotizacionです。

これをトラブルシューティングするにはどうすればよいですか?

34
ray sn0w

Laravelは、テーブル名に使用した複数形のWordを判別できないと推測しています。

モデルのテーブルを次のように指定するだけです。

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

移行ファイルを確認してください。おそらく、次のようにSchema :: tableを使用しています。

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

新しいテーブルを作成する場合は、Schema :: create:を使用する必要があります

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

laravel 5.2でもこの問題に直面しましたが、テーブル名の宣言が機能しない場合は、おそらくリクエストの検証コードに間違った宣言または間違いがあるためです(使用している場合)

6
sao