如何在laravel中使用多态关系进行CRUD?

时间:2018-02-13 13:45:24

标签: php laravel laravel-5 orm polymorphism

我有两种类型的帖子:简单的帖子和博客文章 我希望通过多态关系将其与评论联系起来

这是我的模特:

// Comment Model 
public function commentable()
{
    return $this->morphTo();
}

public function user()
{
    return $this->belongsTo('App\User', 'foreign_key');
}


//Article and Simple post Model 

public function user()
{
    return $this->belongsTo('App\User', 'foreign_key');
}

public function comments()
{
    return $this->morphMany('App\Comment', 'commentable');
}

这是使用创建评论的最佳方式,并在commentable_type中存储每种类型的类名称的正确值和id

    $comment = Auth::User()->comment();
    $comment->content = $request->input('content');
    $comment->commentable_id = $request->input(?);
    $comment->commentable_type = $request->input(?);
    $comment->save();

1 个答案:

答案 0 :(得分:1)

最好,你应该通过可以模仿的模型创建评论(即:Post,SimplePost)check the docs

$comment = new App\Comment(['content' => $request->input('content')]);
$post = Post::find($request->input('post_id'));
$post->comments()->save($comment);