我正在尝试传递过去的ID并将其插入另一个数据库。
我的网页上有这样的节目帖子
/帖/ {ID}
。从那以后我想添加一个评论部分,所以我的表单设置如下:
<form method="POST" action="/posts/{{ $post->id }}/comments">
(当我检查代码时,它会插入正确的ID和“{{$ posts-&gt; id}}”点。
在我的routes.php里面,我得到了顺风顺序的路线:
Route::post('/posts/{post}/comments', 'CommentsController@store');
在CommentsController.php里面我得到了以下
public function store(Post $post)
{
Comment::create([
'body' => request('body'),
'post_id' => $post->id
]);
return back();
}
当我尝试添加评论时,我收到此错误:
SQLSTATE [23000]:完整性约束违规:1048列'post_id' 不能为空
当我将我的代码从CommentsController.php更改为:
'post_id' => "2"
它工作正常(但评论将始终在ID为2的帖子中添加) 我似乎无法找出为什么我的身份不会低谷。
Anny对此有所帮助吗?
答案 0 :(得分:0)
试试这个
public function store(Request $request, Post $post)
{
$comment= new Comment;
$comment->body = $request->body;
$comment->post_id = $post->id;
$comment->save();
return back();
}
路径模型绑定允许您将传递到路径中的Post ID转换为控制器方法中的实际post对象。如果您使用帖子和评论之间的关系,它甚至可以更顺畅地工作:
public function store(Request $request, Post $post)
{
$post->comments->create([
'body' => $request->body
]);
return back();
}
内部post
模型
public function comments()
{
return $this->hasMany('App\Comment','post_id');
}