【问题标题】:SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value on laravel 8SQLSTATE [HY000]:一般错误:1364 字段 'user_id' 在 laravel 8 上没有默认值
【发布时间】:2021-09-10 04:22:17
【问题描述】:

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);
    }

【问题讨论】:

    标签: laravel laravel-8


    【解决方案1】:

    正如错误所说,您没有通过 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());
    

    【讨论】:

    • 改成了SQLSTATE[HY000]: General error: 1364 Field 'standart_id' doesn't have a default value
    • 现在是files_link,当我添加files_link 时,它会转到错误字段description
    • @UyyU 添加文件链接和描述与我添加 user_id 和 standart_id 的方式相同
    • 是的已经添加了,现在我得到了错误SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'question_id' cannot be null (SQL:
    • 这意味着问题数组的 question_id 为空值。所以检查 dd($request->question) 并查看是否为空
    猜你喜欢
    • 2021-03-22
    • 2020-05-25
    • 2017-11-10
    • 1970-01-01
    • 2021-06-05
    • 2019-01-05
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    相关资源
    最近更新 更多