首页 > 解决方案 > SQLSTATE [HY000]:一般错误:1364 字段 'user_id' 在 laravel 8 上没有默认值

问题描述

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

为什么我得到那个错误?以及如何解决?

这是我的控制器看起来像

    public function create(Request $request, Question $question)
    {

        $data = request()->validate([
            'standart_id' => 'required',
            'question.*.question' => 'required',
            'question.*.question_id' => 'required',
            'user_id' => 'required',
            'question.*.answer' => 'required',
            'files_link' => 'required',
            'description' => 'required',
        ]);

        $data['user_id'] = Auth()->id();

//        dd($data);
//        dd($request->input('question.*.standart_id'));

        $responses = $question->responses()->createMany($data['question']);

    }

这是我在 deadump 上得到的$data

array:5 [▼
  "standart_id" => "2"
  "user_id" => 3
  "files_link" => "http://127.0.0.1:8000/auditee/1/respons/"
  "description" => "asdasd"
  "question" => array:3 [▼
    0 => array:3 [▼
      "question" => "test"
      "question_id" => "4"
      "answer" => "Ya"
    ]
    1 => array:3 [▶]
    2 => array:3 [▶]
  ]
]

有人可以帮我解决这个问题吗?

已编辑

创建路径

Route::post('/standart/{question}/answer/post', [App\Http\Controllers\ResponsController::class, 'create']);

响应模型

    protected $guarded = [];

    public function question()
    {
        return $this->belongsTo(Question::class);
    }

    public function standart()
    {
        return $this->belongsTo(Standart::class);
    }

问题模型

    public function standard()
    {
        return $this->belongsTo(Standart::class);
    }

    public function responses()
    {
        return $this->hasMany(Response::class);
    }

标准模型

    protected $guarded = [];

    public function questions()
    {
        return $this->hasMany(Question::class);
    }

    public function responses()
    {
        return $this->hasMany(Response::class);
    }

标签: laravellaravel-8

解决方案


正如错误所说,您没有通过user_id.

$result=collect($request->question)->map(function ($item)use($request) {
  $item['user_id'] = $request->user_id;
  $item['standart_id'] = $request->standart_id;
  $item['files_link'] = $request->files_link;
  $item['description'] = $request->description;
  return $item;
});


Response::insert($result->toArray());

推荐阅读