【问题标题】:Field 'product_id' doesn't have a default value字段“product_id”没有默认值
【发布时间】:2018-07-29 23:40:25
【问题描述】:

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

一般错误:1364 字段“product_id”没有默认值(SQL:插入到 product_images(路径、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]);

【问题讨论】:

  • 这是一个 hasMnay 关系

标签: php laravel


【解决方案1】:

由于您在图像表中使用product_id,因此关系必须是hasMany

return $this->hasMany(Image::class);

【讨论】:

  • 路径已保存,但在store('public/pics');文件夹中找不到图片
  • @Switz 它与原始问题无关。如果您无法通过保存图片来解决这个新问题,请创建一个新问题并在此处发布所有相关信息。
【解决方案2】:

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

  product_id field is null select.

立即尝试

【讨论】:

    【解决方案3】:

    我已经遇到过这种错误,但我通过将相关字段设置为可空来解决它。查看您的迁移并将“product_id”设置为可为空

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-09-25
      • 2018-03-19
      • 2014-11-09
      • 2015-07-07
      • 2019-11-22
      • 2018-07-09
      • 2018-07-14
      • 2020-05-29
      • 1970-01-01
      相关资源
      最近更新 更多