我第一次在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');
答案 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();
对我有用。