Laravel 5.1、Eloquent、带注释的多对多

Laravel 5.1, Eloquent, ManyToMany with comment

我按照 Jeffrey Way 的 ManyToMany 教程 https://laracasts.com/series/laravel-5-fundamentals/episodes/21 学习了所有内容,并且一切正常。但是,我想为我的多对多关系添加另一个功能,即 'comment' 为对象关系提供更多信息。

我有两个模型:

文章[id, title, text] 类别 [id, title]

这是一个多对多的关系,所以我创建了一个枢轴 table 作为 article_category。此 table 有两列 article_idcategory_id,它们通过模型中的函数连接为:

Article.php:

public function categories()
{
    return $this->belongsTo('App\Category');
}

&Category.php

public function articles()
{
    return $this->belongsTo('App\Article');
}

不过,我想在枢轴 table 中添加另一个名为 comment 的字段,我可以在其中描述为什么将这篇文章添加到此特定类别。添加一列不是问题,但我不知道如何从文章实例中检索此评论:

$articleCategoryComment = Article::find(1)->commentFromPivotTable;

我总是可以定义另一个 oneToMany 关系,并创建另一个 table 来保存带有字段 [artice_id,category_id,comment] 的评论,但我想知道是否有 better/simpler 方法。

此外,我们将不胜感激任何关于数据库结构的好资源。我更喜欢 MySQL 中关于如何正确做事的大量示例,但是一本从头开始解释事情的书也是很好的推荐。不过,目前我没有时间深入探讨,但它会被添加为书签以供日后阅读。

谢谢!

您应该在多对多关系上使用 belongsToMany。如果您想要在数据透视表 table 上添加其他列,请使用 withPivot() 方法。来自文档:

return $this->belongsToMany('App\Role')->withPivot('column1', 'column2');

您可以在此处找到更多信息:http://laravel.com/docs/master/eloquent-relationships#many-to-many