为什么外键约束失败?

时间:2016-07-26 12:21:39

标签: php laravel migration

我创建了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的函数。

这是我的Post模型中的setUser_id():

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 个答案:

答案 0 :(得分:1)

Model::create在创建的模型上调用save(),因此您必须将user_id添加到发送到创建函数的数组中