Laravel 5.1,传递我的身份证

时间:2018-04-06 16:25:25

标签: laravel laravel-5.1

我正在尝试传递过去的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对此有所帮助吗?

1 个答案:

答案 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');
}