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_id
和 category_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
我按照 Jeffrey Way 的 ManyToMany 教程 https://laracasts.com/series/laravel-5-fundamentals/episodes/21 学习了所有内容,并且一切正常。但是,我想为我的多对多关系添加另一个功能,即 'comment' 为对象关系提供更多信息。
我有两个模型:
文章[id, title, text] 类别 [id, title]
这是一个多对多的关系,所以我创建了一个枢轴 table 作为 article_category
。此 table 有两列 article_id
和 category_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