laravel SQLSTATE[HY000]:一般错误:1364 字段“care”没有默认值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/54133994/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 18:14:59  来源:igfitidea点击:

SQLSTATE[HY000]: General error: 1364 Field 'care' doesn't have a default value

phplaravellaravel-5eloquent

提问by pro

I'm new to Laravel and trying to add products from admin panel to index page, firstly it was working fine but now its showing me error SQLSTATE[HY000]: General error: 1364 Field 'care' doesn't have a default value, is there any solution of this problem?

我是 Laravel 的新手,并试图将产品从管理面板添加到索引页面,首先它运行良好,但现在显示错误SQLSTATE[HY000]: General error: 1364 Field 'care' doesn't have a default value,是否有解决此问题的方法?

SQLSTATE[HY000]: General error: 1364 Field 'care' doesn't have a
default value (SQL: insert into `products` (`product_name`,
`product_code`, `product_color`, `description`, `price`, `image`,
`updated_at`, `created_at`) values (Filter, ASD111, CLR, ASDF, 1000, 
85525.png, 2019-01-10 17:18:33, 2019-01-10 17:18:33))

This is ProductsController:

这是 ProductsController:

  public function addProduct(Request $request){

  if($request->isMethod('post')){
    $data = $request->all();
    //echo "<pre>"; print_r($data); die;

    $product = new Product;
    $product->product_name = $data['product_name'];
    $product->product_code = $data['product_code'];
    $product->product_color = $data['product_color'];
    if(!empty($data['description'])){
      $product->description = $data['description'];
    }else{
    $product->description = '';         
    }
    $product->price = $data['price'];

    // Upload Image
    if($request->hasFile('image')){
      $image_tmp = Input::file('image');
      if($image_tmp->isValid()){
        $extension = $image_tmp->getClientOriginalExtension();
        $filename = rand(111,99999).'.'.$extension;
        $large_image_path = 
        'images/backend_images/products/large/'.$filename;
        $medium_image_path = 
        'images/backend_images/products/medium/'.$filename;
        $small_image_path = 
        'images/backend_images/products/small/'.$filename;
        // Resize Images
        Image::make($image_tmp)->save($large_image_path);
        Image::make($image_tmp)->resize(600,600)->save($medium_image_path);
        Image::make($image_tmp)->resize(300,300)->save($small_image_path);

        // Store image name in products table
        $product->image = $filename;
        }
       }

    $product->save();

        return redirect('/admin/view-products')- 
   >with('flash_message_success','Product has been added successfully!');
  }


  return view('admin.products.add_product');
}

public function editProduct(Request $request, $id=null){

  if($request->isMethod('post')){
    $data = $request->all();
    //echo "<pre>"; print_r($data); die;


    if($request->hasFile('image')){
      $image_tmp = Input::file('image');
      if($image_tmp->isValid()){
        $extension = $image_tmp->getClientOriginalExtension();
        $filename = rand(111,99999).'.'.$extension;
        $large_image_path = 'images/backend_images/products/large/'.$filename;
        $medium_image_path = 'images/backend_images/products/medium/'.$filename;
        $small_image_path = 'images/backend_images/products/small/'.$filename;
        // Resize Images
        Image::make($image_tmp)->save($large_image_path);
        Image::make($image_tmp)->resize(600,600)->save($medium_image_path);
        Image::make($image_tmp)->resize(300,300)->save($small_image_path);

        // Store image name in products table
        $product->image = $filename;
      }
    }

    if(empty($data['description'])){
          $data['description'] = '';
        }


    Product::where(['id'=>$id])->update(['product_name'=>$data['product_name'],'product_code'=>$data['product_code'],'product_color'=>$data['product_color'],'description'=>$data['description'],'price'=>$data['price'],'image'=>$fileName]);
    return redirect()->back()->with('flash_message_success','Product updated successfully!');


  }

  //Get product details
  $productDetails = Product::where(['id'=>$id])->first();

  return view('admin.products.edit_product')->with(compact('productDetails'));
}

回答by Saif Manwill

Just add your value: careto your fillable

只需添加您的价值:care到您的fillable

protected $fillable = [
        'care',
];

Or just make it nullablein your migration:

或者只是nullable在您的迁移中使用它:

$table->string('care')->nullable();

Does it work?

它有效吗?

回答by Cc See

$fillable needs to match the database column names not the form names.

$fillable 需要匹配数据库列名称而不是表单名称。

Also, some fields need to be nullable incase the user does not have it. Exp. address

此外,某些字段需要可以为空,以防用户没有它。经验。地址