【问题标题】:SQLSTATE[HY000]: General error: 1364 Field 'category_name' doesn't have a default valueSQLSTATE [HY000]:一般错误:1364 字段 'category_name' 没有默认值
【发布时间】:2019-12-01 00:23:49
【问题描述】:

我正在尝试将数据插入数据库,但它说:

SQLSTATE[HY000]:一般错误:1364 字段 'category_name' 没有 有一个默认值(SQL:插入categoriesupdated_atcreated_at) 值 (2019-07-23 02:34:10, 2019-07-23 02:34:10))

我的控制器:

  public function store(Request $request)
  {
    //dd($request->all());
    $request->validate([
        'category_name'         => 'required',
        'category_description'  => 'required',
        'category_slug'         => 'required',
        'category_image'        => 'required|image',
    ]);

    $path = $request->file('category_image');
    $image = $path->getClientOriginalName();
    $path->move(public_path('images/backend_images/category_images'));

    $category = Category::create($request->all());

    return redirect()->back();
  }

我的模特:

   protected $fillable = [
     'categry_name', 'categry_description', 'categry_slug', 'categry_image'
   ];

这是一个数据库表:

【问题讨论】:

    标签: laravel eloquent laravel-5.8


    【解决方案1】:

    根据您的控制器,您的模型有拼写错误

    class categories extends Model {
              protected $fillable = ['category_name', 'category_description', 'category_slug', 'category_image']; 
              //only the field names inside the array can be mass-assign
    }
    

    更多详情:What does “Mass Assignment” mean in Laravel

    【讨论】:

      【解决方案2】:

      根据您的控制器,您的模型中存在拼写错误。 您必须将模型更改为

         protected $fillable = [
           'category_name', 'category_description', 'category_slug', 'category_image'
         ];
      

      如果您使用数据库迁移,则必须更新所有列,例如:

             Schema::create('categories', function (Blueprint $table) {
                  $table->bigIncrements('id');
                  $table->string('category_name');
                  $table->string('category_description');
                  $table->string('category_slug');
                  $table->string('category_image');
                  $table->timestamps();
              });
      

      在设计您的数据库时,要非常精确,否则在您不确定是否必须使用的列中使用“nullable”。迁移中的可空声明是:

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

      【讨论】:

        【解决方案3】:

        您的$fillable 中的categry_name 拼写错误。它缺少e

        【讨论】:

          猜你喜欢
          • 2021-05-23
          • 2019-05-09
          • 2019-09-10
          • 2021-01-04
          • 2020-09-06
          • 2020-06-21
          • 2019-05-19
          • 2019-06-05
          • 2019-12-13
          相关资源
          最近更新 更多