QueryException SQLSTATE [42S02]:找不到基表或视图:1146表

时间:2017-12-07 15:14:08

标签: laravel eloquent laravel-5.4

我第一次在laravel中学习外键..当我在表格上插入数据时,我有此消息错误。我觉得我的桌子很好。你能告诉我怎么解决这个问题吗?

控制器:

public function tambah(Request $request){
    $a = new Admin;
    $this->validate($request, ['nama'=>'required|unique:ab']);
    $a->id = $request->id;
    $a->nama = $request->nama;
    $a->save();

    return redirect()->to('admin/data_desa')->with('success','Data berhasil ditambahkan');
}


}

表:

 class CreateDesasTable extends Migration
 {
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    //
    Schema::dropIfExist('desas');
    Schema::create('desas', function(Blueprint $table){
    $table->increments('id');
    $table->string('nama');

});
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    //
    Schema::dropIfExist('desas');

}
}

路线:

Route::group(['middleware' => 'web'], function(){
Route::group(['prefix' => 'tanitani'], function(){
    Route::get('admin', 'AdminController@index');
    Route::get('admin/data_desa','AdminController@tampil');
    Route::post('admin/data_desa', 'AdminController@tambah');

3 个答案:

答案 0 :(得分:2)

您可以覆盖Admin模型的表名,因为您有不同的表名。

为什么?

因为通过对流,Laravel将假设表名为admins

所以将此行添加到您的模型中:

protected $table = 'desas';

答案 1 :(得分:0)

看起来你没有使用laravel雄辩的模型惯例。

您确定模型Admin是您需要在控制器中保存desas数据的模型吗?

如果答案是真的,请使用

更新模型管理员
protected $table = 'desas';

推荐:尝试在模型和数据库表之间使用相同的名称约定。

有关详细信息,请参阅https://laravel.com/docs/5.4/eloquent#eloquent-model-conventions

继续之前推荐的文档:

答案 2 :(得分:0)

我刚遇到这个问题,只需检查迁移文件,表名需要为复数 当我搜索时:

App\post::all();
Table 'laravel.posts' doesn't exist (SQL: select * * from `posts`)'

如此更改即可再次创建所有内容make:migration create_posts_table 运行命令并迁移。然后:

App\posts::all();

对我有用。