Field' product_id'没有默认值

时间:2018-02-19 17:25:53

标签: php laravel

这就是我的图片和产品型号的样子。当我尝试保存图像时,我收到错误

  

常规错误:1364字段' product_id'没有默认值(SQL:插入product_images(path,updated_at,created_at)值

提交了图片路径,但未提交产品ID。此外,当我$product->images()->create(['product_id',=>$product'url_path' => $file_name]);时,我收到错误但是,数据被保存在数据库中(我知道这显然不是正确的方式)

为什么会这样?

图片

protected $fillable = ['product_id', 'url_path'];

public function products()
{
    return $this->belongsTo(Product::class);
}

产品

public function images()
{
    return $this->belongsToMany(Image::class);
}

控制器

$product = Product::findorfail($id);
if ( $request->hasFile('image'))
{
    $path =  $request->file('image')->store('public/pics');

    $file_name = $request->file('image')->hashName();


    $product->saveProduct($request);

    $product->images()->create(['url_path' => $file_name]);

3 个答案:

答案 0 :(得分:1)

由于您在图片表中使用hasOwnProperty(name),因此关系必须为product_id

hasMany

答案 1 :(得分:0)

打开数据库并检查图像表。

  product_id field is null select.

立即尝试

答案 2 :(得分:0)

我已经遇到过这种错误,但是通过将有问题的字段置于可空的状态我解决了这个问题。查看您的迁移并将产品放入' product_id'在可空的

$table->integer("product_id")->nullable()

发生此错误是因为您尝试使用必须填充时采用空值的字段保存数据

我希望在相反的情况下帮助你告诉我们