在 ORM(Eloquent)中,具有 Genre 的 Book 是一对多关系吗?

Posted

技术标签:

【中文标题】在 ORM(Eloquent)中,具有 Genre 的 Book 是一对多关系吗?【英文标题】:In an ORM (Eloquent), is a Book that has a Genre a One-to-Many relationship? 【发布时间】:2014-02-03 09:48:15 【问题描述】:

总的来说,我是 Laravel 和 ORM 的新手,我正在尝试移植一个我已经写过的网站。我有一个定义流派的表,并通过具有流派 ID 的书将它们关联到书表。

这是一对多的关系吗?说一本书“属于”一个流派,一个流派“有很多”书,这感觉很奇怪。我宁愿说一本书“有”一个流派,一个流派“属于许多”书,但这似乎并不存在。

【问题讨论】:

【参考方案1】:

如果genre_id 在书表中,则书本属于一个流派。该类型有很多书。

如果一个表同时具有主键和外键(genre_id 是另一个表的 FK),那么该记录属于 To。

您的第一个猜测是正确的。理解关系语义需要一点时间,但是一旦理解了它们,参考就轻而易举了。

不久前的这篇文章让我走上了理解不同关系的轨道:http://forums.laravel.io/viewtopic.php?pid=11819#p11819

【讨论】:

谢谢!我会从外键的角度来考虑,因为我对这些有更多的经验。 用小韵..“如果我有外键,那么它就属于我”【参考方案2】:

在 SQL 中,您会被“有很多”的术语所困扰。如,类型“has_many”的书籍。尝试围绕它的一种方法是说许多书籍将具有相同的一种类型。这就是一对多短语的由来。如果一本书可以有多种类型(例如恐怖-喜剧-爱情),您可能需要将其视为多对多关系。

【讨论】:

谢谢!我想你可以说一个有标签的书架是一种“类型”,那么那个书架肯定会“有很多”书。

以上是关于在 ORM(Eloquent)中,具有 Genre 的 Book 是一对多关系吗?的主要内容,如果未能解决你的问题,请参考以下文章

laravel Eloquent ORM 多表插入

Laravel 插入嵌套的 Eloquent ORM 模型

Laravel Eloquent ORM "whereHas" 通过表

雄辩的 ORM 查询仅返回在其集合中具有特定模型的模型

如何在 eloquent ORM 中执行此搜索查询

在 Eloquent ORM 中向模型添加字段