2017-01-22 3 views
3

をポストするために、外部キーuser_idを保存します。投稿はユーザーに属し、ユーザーは多数の投稿を持つことができます。 user_idがデータベースのポストテーブルに保存されていません。は、私は、ユーザーとポストモデルでlaravelアプリケーションを開発していると私はのエラーを取得していますテーブル

ポストコントローラー:

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')]); 

また、Postモデルの$fillableアレイにuser_idを追加することを忘れないでください。

+1

最初の回答は正常です。ありがとうございました:) – steven

+0

ええ、すでに追加されています:) – steven

1

理由は投稿を保存するときにuser_idを与えていないからです。

1つの解決策があります。

$post = new Post([ 

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

既に解決策があります。しかし、ありがとう。 – steven

+1

@Gayanあなたはコンマを配列に追加するのを忘れてしまった。 –

+0

Ops!私の悪い。私はそれを編集します。ありがとう! – Gayan

関連する問題