如何从Post模型中存储post_id Laravel

时间:2017-06-30 15:56:12

标签: php laravel eloquent

首先,我是Laravel的新手。我正在努力建立一个小社交网络。我有一个帖子用户和评论模型。在Post模型中,我在帖子和评论之间有一个hasMany关系。  我有一个store()方法,用于保存帖子上的用户评论:

public function store(Post $post)
{

     $this->validate(request(), ['body'=> 'required|min:2']);

    Comment::create([
            'body' => request('body'),
            'post_id'=>$post->id
    ]);

    return back();

}

我的帖子模型:

 <?php

    namespace App;

    use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    //

    protected $fillable = ['title', 'body'];

    public function comment()
    {
        return $this->hasMany('App\Comment');
    }
}

有没有更好的方法从模型本身保存post_id并以更好的方式重构代码?!

1 个答案:

答案 0 :(得分:0)

控制器正在处理验证,存储和重定向。你可以通过在s = Stuff.new(name: 'stuff') s.one! 模型上创建一个方法然后在控制器上调用它来重构你的代码。

由于帖子和评论之间存在hasMany关系,因此您可以将关系称为方法,以便将评论存储在当前Post上。像这样:

post_id

然后你在你的构造函数上调用它:

public function storeComment($body)
{
    $this->comment()->create(compact('body'));
}