【问题标题】:Laravel 5.1, Eloquent, ManyToMany with commentLaravel 5.1, Eloquent, ManyToMany 带注释
【发布时间】:2015-12-17 12:14:36
【问题描述】:

我遵循了 Jeffrey Way 的 ManyToMany 教程 https://laracasts.com/series/laravel-5-fundamentals/episodes/21,我得到了一切,一切都很好。但是,我想为我的多对多关系添加另一个功能,那就是一个“评论”,它为对象关系提供了更多信息。

我有两个模型:

文章 [id, 标题, 文本] 类别 [id, 标题]

这是一个多对多的关系,所以我创建了一个数据透视表为article_category。该表有两列article_idcategory_id,它们通过模型中的函数连接为:

文章.php:

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

& Category.php

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

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

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

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

此外,任何关于数据库结构的好资源都将不胜感激。我更喜欢一堆关于如何在 MySQL 中以正确方式做事的例子,但是一本从头开始解释事情的书也是很好的推荐。不过,目前我没有时间深入探讨,但会将其添加为书签以备将来阅读。

谢谢!

【问题讨论】:

    标签: mysql database eloquent many-to-many laravel-5.1


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-21
      • 1970-01-01
      • 2016-02-17
      • 2016-04-27
      • 1970-01-01
      • 1970-01-01
      • 2018-03-30
      • 2020-10-23
      相关资源
      最近更新 更多