我试图使用Laravel雄辩的模型将数据保存到数据库中。但是,主键是一个自动递增的整数,并且会引发错误:
SQLSTATE [HY000]:常规错误:1364字段'property_valuation_id'没有默认值。
有关如何解决此问题的任何帮助。
这是控制器:
public function index(Request $request)
{
$property_valuation = new PropertValuation();
$property_valuation->property_valuation_id="";
$property_valuation->integer('property_valuation_id')->default(1);
$property_valuation->district_id = $request->input('district');
$property_valuation->propertyneighbourhood = $request->input('neighborhood');
$property_valuation->propertystreet = $request->input('street');
$property_valuation->numberofbedrooms =$request->input('bedrooms');
$property_valuation->currency=$request->input('currency');
$property_valuation->monthlyrent=$request->input('rent');
$property_valuation->save();
}
这里是模型:
class PropertValuation extends Model
{
protected $table = 'property_valuation';
public $primaryKey = 'property_valuation_id';
public $timestamps = false;
}
答案 0 :(得分:0)
您正在用此行覆盖Laravels的默认行为
$property_valuation->property_valuation_id="";
$property_valuation->integer('property_valuation_id')->default(1);
将其删除,并且在SQL查询中应将其忽略,并应设置自动增量值。
答案 1 :(得分:0)
首先您应该使用
$table->bigIncrements('property_valuation_id');
or
$table->increments('property_valuation_id');
在迁移文件中,然后在控制台 php artisan migration:fresh 中运行以更新数据库结构。您还为何使用自定义字段增量名称而不是默认的'id'?
第二,您要做的是在模型中设置可填充变量的值。无需在该数组中包含自动增量字段。
protected $fillable = ['neighborhood', 'district',.....];
还有最后一件事。不需要根据请求设置模型的所有值,laravel可以自行完成。因此,您的控制器存储方法可能是
public function store(Request $request)
{
PropertValuation::create($request->all());
return redirect()->back();
}
更清洁,是吗? :)