2017-06-30 3 views
-1

まず最初に、私はLaravelを初めて使っています。私はソーシャルネットワークを構築しようとしています。投稿ユーザーとコメントモデルがあります。投稿モデルでは、投稿とコメントの間にhasMany関係があります。Postモデルからpost_idを格納する方法| Laravel

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

コントローラでは、検証、保存、リダイレクトを処理しています。 Uは、Postモデルでメソッドを作成してコードをリファクタリングし、コントローラで呼び出すことができます。

投稿とコメントとの間にhasMany関係があるので、現在のコメントpost_idにコメントを保存するために、メソッドとして関係を呼び出すことができます。これと同じように:

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

その後、uがウルコンストラクタにそれを呼び出す:

public function store(Post $post) 
{ 
     $this->validate(request(), ['body'=> 'required|min:2']); 

     $post->addComment(request('body')); 

     return back(); 
} 
+0

はありがとうございました! ..... –

関連する問題