首先,我是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并以更好的方式重构代码?!
答案 0 :(得分:0)
控制器正在处理验证,存储和重定向。你可以通过在s = Stuff.new(name: 'stuff')
s.one!
模型上创建一个方法然后在控制器上调用它来重构你的代码。
由于帖子和评论之间存在hasMany关系,因此您可以将关系称为方法,以便将评论存储在当前Post
上。像这样:
post_id
然后你在你的构造函数上调用它:
public function storeComment($body)
{
$this->comment()->create(compact('body'));
}