J'obtiens cette erreur quand j'essaye de sauvegarder des données sur mysql en utilisant Laravel 5, les autres formes et les méthodes save () fonctionnent bien, mais celle-ci:
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))
Voici ma méthode de magasin de contrôleur:
public function store(CotFormRequest $request)
{
$quote = new Cotizacion;
$quote->customer_id = Input::get('data.clientid');
$quote->total = Input::get('data.totalAftertax');
$quote->save();
}
Et voici mon modèle:
<?php namespace App\Models\Cotizacion;
use Illuminate\Database\Eloquent\Model;
class Cotizacion extends Model {
}
Je dois négliger quelque chose de vraiment évident car je ne comprends pas pourquoi Laravel ajoute un "S". La table est cotizacion et non cotizacions.
Comment puis-je résoudre ce problème?
Je suppose que Laravel ne peut pas déterminer la forme plurielle du mot que vous avez utilisé pour le nom de votre table.
Spécifiez simplement votre table dans le modèle en tant que telle:
class Cotizacion extends Model{
public $table = "cotizacion";
Vérifiez votre fichier de migration, vous utilisez peut-être Schema :: table, comme ceci:
Schema::table('table_name', function ($table) {
// ...
});
Si vous voulez créer une nouvelle table, vous devez utiliser Schema :: create:
Schema::create('table_name', function ($table) {
// ...
});
J’ai aussi fait face à ce problème dans laravel 5.2 et si la déclaration du nom de la table ne fonctionne pas, c’est probablement parce que vous avez une erreur de déclaration ou une erreur dans le code de validation dans Request (Si vous en utilisez un )