首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QueryException SQLSTATE[42S02]:找不到基表或视图: 1146表

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

Stack Overflow用户
提问于 2017-12-07 23:14:08
回答 3查看 6.8K关注 0票数 0

我第一次学习拉威尔的外键..当我将表单上的数据插入到表中时,出现此消息错误。我想我的桌子没问题。你能告诉我怎么解决这个问题吗?

控制器:

代码语言:javascript
复制
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');
}


}

表:

代码语言:javascript
复制
 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');

}
}

路由:

代码语言:javascript
复制
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');
EN

回答 3

Stack Overflow用户

发布于 2017-12-07 23:19:59

您必须覆盖Admin模型中的表名,因为您具有不同的表名。

为什么?

因为通过传送,Laravel将假设表名为admins。

因此,将这一行添加到您的模型中:

代码语言:javascript
复制
protected $table = 'desas';
票数 2
EN

Stack Overflow用户

发布于 2017-12-07 23:54:31

看起来您并没有使用laravel雄辩的模型约定。

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

如果答案为true,请使用以下命令更新model Admin

代码语言:javascript
复制
protected $table = 'desas';

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

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

继续之前的推荐文档:

票数 0
EN

Stack Overflow用户

发布于 2019-01-30 23:25:52

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

代码语言:javascript
复制
App\post::all();
Table 'laravel.posts' doesn't exist (SQL: select * * from `posts`)'

因此,更改create it all and make:migration create_posts_table,运行命令并迁移。然后:

代码语言:javascript
复制
App\posts::all();

这对我很管用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47698155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档