在 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 是一对多关系吗?的主要内容,如果未能解决你的问题,请参考以下文章