2017-01-22 58 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