【问题标题】:How the save autoincrement values using laravel eloquent如何使用 laravel eloquent 保存自动增量值
【发布时间】:2019-09-27 06:47:43
【问题描述】:

我正在尝试使用 Laravel eloquent 模型将数据保存到数据库中。但是,主键是一个自增整数,它会抛出一个错误:

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;
}

【问题讨论】:

  • 您能告诉我们发生错误的模型和控制器方法吗?
  • 再次检查问题的代码
  • 删除行报错 SQLSTATE[HY000]:一般错误:1364 字段 'property_valuation_id' 没有默认值
  • 你确定sql表真的有一个自增的主键吗?

标签: laravel-5 eloquent


【解决方案1】:

你正在用这行代码覆盖 Laravel 的默认行为

$property_valuation->property_valuation_id="";
$property_valuation->integer('property_valuation_id')->default(1);

删除它,它应该在 SQL 查询中被忽略,并且应该设置自动增量值。

【讨论】:

    【解决方案2】:

    首先你应该使用

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

    干净多了,是吗? :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-25
      • 2019-05-30
      • 2011-01-14
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      • 2018-01-03
      • 2014-09-05
      相关资源
      最近更新 更多