为什么会出现此错误:一般错误:1364 字段“user_id”没有默认值

kav*_*avi 4 php mysql laravel

我有 postqs 和 users 表。user_id 是 postqs 表中的外键。我有一个表格,在我提交表格后,所有数据都正确保存在数据库中。但它不是指向索引页面,它显示此错误:

SQLSTATE[HY000]: 一般错误: 1364 字段 'user_id' 没有默认值 (SQL: insert into Postqs( question, description, solution, image, tags, updated_at, created_at) values (hh, bb, bb, images .bmp.jpg, bb, 2017 -09-20 08:14:32, 2017-09-20 08:14:32))

我该如何解决?

存储控制器功能:

public function store(Request $request)
{
    $this->validate($request, [
        'question' => 'required',
        'description' => 'required',
        'tags' => 'required',

    ]);

    $user = auth()->user();
    $user->postqs()->create($request->all() );

    $input = $request->all();
    $tags = explode(",", $request->tags);

    $postqs = Postqs::create($input);
    $postqs->tag($tags);

    return redirect()->route('postqs.index')
                    ->with('success','Your question created successfully');
Run Code Online (Sandbox Code Playgroud)

索引控制器功能:

   $postqs=Postqs::whereHas('user')->get();        
    return view('postqs.index',compact('postqs','users'));
Run Code Online (Sandbox Code Playgroud)

postqs模型:

    protected $fillable = 
    ['question','description','solution','image','tags','user_id'];

    public function user(){
    return $this->belongsTo("App\User"); }
Run Code Online (Sandbox Code Playgroud)

用户模型:

    public function postqs(){
     return $this->hasMany("App\Postqs");
    }
Run Code Online (Sandbox Code Playgroud)

Mat*_*nto 5

您表中的字段 user_id 不可为空,并且您尝试在没有 user_id 的情况下保存帖子,或者可能是 user_id 未通过请求传递。尝试这个:

$this->validate($request, [
    'question' => 'required',
    'description' => 'required',
    'tags' => 'required',

]);

$user = auth()->user();
$data = $request->all();
$data['user_id']=$user->id;
$user->postqs()->create($data);
$tags = explode(",", $request->tags);

$postqs = Postqs::create($data);
//$postqs->tag($tags);
$postqs->tag()->save($tags);

return redirect()->route('postqs.index')
                ->with('success','Your question created successfully');
Run Code Online (Sandbox Code Playgroud)