2016-07-26 114 views
0

我创建了一个Post模型,我想创建一个带有表格的帖子 。但是,如果我提交表单它给我这个错误:为什么外键约束失败?

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(),因此您必须将user_id添加到发送给t的数组中他创建功能

+0

你是什么意思?我如何将user_id添加到数组中? – Stackingcoder

+0

你可以把它变成一个变量并将其添加到第一个变量中。 '$ data = $ request-> only(['title','text','category_id']; $ data ['user_id'] = Auth :: user() - > getId(); $ post = Post ::创建($的数据);' – rypskar