2016-07-26 6 views
0

私は投稿モデルを作成しました。私は投稿付き フォームを作成したいと思います。外部キー制約が失敗するのはなぜですか?

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`internetstuffer`.`posts`, CONSTRAINT `posts_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)) (SQL: insert into `posts` (`title`, `text`, `category_id`, `updated_at`, `created_at`) values (vsvsvdv, sdsdfsdf, 1, 2016-07-26 12:13:34, 2016-07-26 12:13:34)) 

は私がUSER_IDを設定する関数を作成しましたので、私が間違っているのかわからない:私はフォームを送信した場合しかし、それは私にこのエラーが発生します。ここで

は(私のsetUser_idである)私のPostモデルから:

public function setUser_id() { 
    $this->attributes['user_id'] = Auth::user()->getId(); 
} 

ここに私のHomeController.phpです:

public function postForum(Request $request) { 
    $post = Post::create($request->only(['title', 'text', 'category_id'])); 
    $post->setUser_id(); 
    $post->save(); 
    return back(); 
} 

そして、ここでは私のフォームです:

    <form method="post"> 
          <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
          <input type="text" name="title" placeholder="Title"> <br> <br> 
          <input type="text" name="text" placeholder="text"> <br> <br> 
          <select name="category_id"> 
           @foreach($categories as $category) 
            <option value="{{ $category->getId() }}">{{ $category->getName() }}</option> 
            @endforeach 
          </select> <br> <br> 
          <input type="submit" value="Post"> 
         </form> 
+1

あなたの投稿には挿入時にuser_idが必要です。 '$ post-> setUser_id()'関数が挿入物に表示されないので、制約はおそらく失敗します – acupajoe

答えて

1

Model::create作成したモデルでsave()を呼び出します。したがって、tに送信する配列にuser_idを追加する必要があります。彼は関数を作成します

+0

正確にはどういう意味ですか?どのように配列にuser_idを追加するのですか? – Stackingcoder

+0

それを変数に入れて最初に追加することができます。 $ data ['user_id'] = Auth :: user() - > getId(); $ post = Post :: '$ data = $ request->のみ(' 'タイトル'、 'テキスト'、 'category_id' create($ data); ' – rypskar

関連する問題