我在产品创建过程中具有图像上传功能。这是控制器中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:插入
products
(title
,price
,{{1} })values(test,1,uploads / awy3CvVHLajER1E1gfpu.jpg))
问题是我表中没有这样的列。这是产品型号
image
laravel如何决定插入/寻找此字段?
答案 0 :(得分:0)
如果数据库表中有file_id
列,请转到phpmyadmin中的表结构,然后单击file_id列前面的change
,然后设置属性default to NULL
并勾选{{ 1}}。
点击保存!
重新运行项目!
答案 1 :(得分:0)
这不是关于laravel,你的数据库中有一个file_id
字段没有默认值,可能你也有一个files
表。
保存laravel时只设置三个字段:title
,price
和image
但不设置file_id
,因为file_id
没有默认值值mysql不知道填充它的内容并返回错误。
您可以将file_id
更改为可为空,并将其默认值设置为null。