如何使用laravel雄辩地保存自动增量值

时间:2019-05-09 12:19:45

标签: laravel-5 eloquent

我试图使用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;
}

2 个答案:

答案 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();
}

更清洁,是吗? :)