Laravel查询正在查找不存在的列

时间:2017-07-25 05:09:12

标签: laravel laravel-5

我在产品创建过程中具有图像上传功能。这是控制器中createSubmit中的函数

public function productsCreateSubmit()
{

    $product = new Product;
    $product->title = Input::get('title');
    $product->price = Input::get('price');
    if (Input::hasFile('image')) {
        $file = Input::file('image');
        $filename = str_random(20);
        $file->move('uploads/', $filename . '.' . $file->getClientOriginalExtension());
        $imagePath = 'uploads/' . $filename . '.' . $file->getClientOriginalExtension();
        $image = Image::make($imagePath);

        if ($image->width() > 200) {
            $image->resize(200, null, function ($constraint) {
                $constraint->aspectRatio();
            });
        }
        if ($image->height() > 200) {
            $image->resize(null, 200, function ($constraint) {
                $constraint->aspectRatio();
            });
        }
        $image->save();
    } else {
        $imagePath = 'default.png';
    }
    $product->image = $imagePath;
    $product->save();
    return Redirect::to('/admin/products');
}

当我点击提交时,我收到错误,即数据库中的列没有默认值。

  

SQLSTATE [HY000]:常规错误:1364字段'file_id'没有默认值(SQL:插入productstitleprice,{{1} })values(test,1,uploads / awy3CvVHLajER1E1gfpu.jpg))

问题是我表中没有这样的列。这是产品型号

image

laravel如何决定插入/寻找此字段?

2 个答案:

答案 0 :(得分:0)

如果数据库表中有file_id列,请转到phpmyadmin中的表结构,然后单击file_id列前面的change,然后设置属性default to NULL并勾选{{ 1}}。 点击保存!

重新运行项目!

答案 1 :(得分:0)

这不是关于laravel,你的数据库中有一个file_id字段没有默认值,可能你也有一个files表。

保存laravel时只设置三个字段:titlepriceimage但不设置file_id,因为file_id没有默认值值mysql不知道填充它的内容并返回错误。

您可以将file_id更改为可为空,并将其默认值设置为null。