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です。
これをトラブルシューティングするにはどうすればよいですか?
Laravelは、テーブル名に使用した複数形のWordを判別できないと推測しています。
モデルのテーブルを次のように指定するだけです。
class Cotizacion extends Model{
public $table = "cotizacion";
移行ファイルを確認してください。おそらく、次のようにSchema :: tableを使用しています。
Schema::table('table_name', function ($table) {
// ...
});
新しいテーブルを作成する場合は、Schema :: create:を使用する必要があります
Schema::create('table_name', function ($table) {
// ...
});
laravel 5.2でもこの問題に直面しましたが、テーブル名の宣言が機能しない場合は、おそらくリクエストの検証コードに間違った宣言または間違いがあるためです(使用している場合)