Laravel中使用Datum模型插入数据提示data表不存在问题求助
问题原因与解决方案
问题根源
Laravel Eloquent模型默认遵循表名规则:模型类名的复数小写形式作为对应表名。你的模型是Datum,它的复数形式是data,所以框架自动尝试向data表插入数据,但你的实际数据库表是Datum,因此出现表不存在的错误。
解决步骤
- 修改Datum模型,指定表名
在Datum模型类中添加$table属性,明确绑定实际的数据库表名:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Datum extends Model { // 绑定实际存在的表名 protected $table = 'Datum'; // 允许批量赋值的字段(必须设置,否则create方法会报错) protected $fillable = ['configuration_id', 'student_id', 'puntuacion']; // 如果你的表没有默认的created_at/updated_at字段,需添加此行 // public $timestamps = false; }
- 优化代码(可选)
你无需对请求数据做json_encode再json_decode的冗余操作,直接提取所需字段即可:
public function postData(Request $request){ $datos = $request->only(['configuracion_id', 'student_id', 'puntuacion']); Log::info('Request:'.json_encode($datos)); Datum::create([ 'configuration_id' => $datos['configuracion_id'], 'student_id' => $datos['student_id'], 'puntuacion' => $datos['puntuacion'], ]); return $datos; }
内容的提问来源于stack exchange,提问作者Luis Yiao
相关产品推荐
相关产品推荐

