Laravel 5.1, 传递我的ID

Laravel 5.1, passing my ID

我正在尝试传递过去的 ID 并将其插入另一个数据库。

我有一个页面显示 post 是这样的

/posts/{id}

。从那以后我想添加一个评论部分,所以我的表格设置如下:

<form method="POST" action="/posts/{{ $post->id }}/comments">

(当我检查代码时,它插入了正确的 ID 和“{{ $posts->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]: Integrity constraint violation: 1048 Column 'post_id' cannot be null

当我将代码从 CommentsController.php 更改为:

'post_id' => "2"

它工作正常(但评论将始终添加到 post,ID 为 2) 我似乎无法找出为什么我的 id 不会进入低谷。

有什么帮助吗?

试试这个

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 对象。如果你使用 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');
}