2017-01-22 57 views
3

我发展与用户和后模型laravel应用和我得到的错误:储蓄外键USER_ID的职位表

Field 'user_id' doesn't have a default value 

我已经建立了两个模型的关系。帖子属于用户,用户可以拥有尽可能多的帖子。 user_id未被保存到数据库中的发布表中。

柱控制器:

class PostController extends Controller 

{ 
    public function postCreatePost(Request $request){ 

     $this->validate($request, [ 

      'body' => 'required' 

     ]); 

     $post = new Post([ 

      'body' => $request->input('body') 

     ]); 

     $post->save(); 

     return redirect()->route('dashboard'); 

    } 

路线:

Route::post('/createpost', [ 

    'uses' => '[email protected]', 
    'as' => 'post.create' 

]); 

回答

1

你需要指定user_id

$post = new Post([ 
    'body' => $request->input('body'), 
    'user_id' => auth()->user()->id 
]); 

或者你可以使用关系:

$user = auth()->user(); 
$user->posts()->create(['body' => $request->input('body')]); 

此外,不要忘记将user_id添加到Post模型中的$fillable阵列。

+1

第一个答案正常。谢谢:) – steven

+0

是的,已经加入:) – steven

1

原因是您在保存帖子时没有给出user_id

一个解决方案是。

$post = new Post([ 

    'body' => $request->input('body'), 
    'user_id' => $your_use_id 
]); 
+0

现在已经有了一个解决方案。谢谢您的好意。 – steven

+1

@Gayan你忘记了给数组添加一个逗号。 –

+0

行动!我的错。我会编辑它。谢谢! – Gayan