我曾尝试阅读Laravel文档和其他类似的有关Laravel数据库关系的文章,但是我似乎无法全神贯注于它以及它如何适用于我的用例。
我经营一个高中运动的网站。我有5张桌子:
学校经常每时每刻改变联赛,或者改变他们所属联赛的哪个部门。 (以为“ school_leagues”)
类似地,学校可能开始进行一项新运动(A学校过去从未有过女足球,但现在有一支足球队)或停办了旧运动(B学校不再有足球队)。 (请考虑“ school_sports”)
此外,尽管该州可能批准25项体育运动,但联盟本身只能批准10项。我的网站是针对联盟本身的,所以我还需要一种方法列出联盟体育运动的哪些制裁。 (请考虑“ league_sports”)
在我以前的(拉拉韦尔之前的)数据模型中,我只是有一个“ school_leagues”表,用于存储学校在特定季节范围内的联赛(和分部,如果适用)(通过start_season_id,end_season_id)。另外,在HTML中,我只是简单地将静态列表硬编码为一个联盟认可的运动项目,以及哪些球队应该出现在该运动项目的排名中。
但是,当我重建数据模型时,我想我可能需要一个更复杂的关系表,该表将学校,体育,季节,联赛和(可选)联赛分区合并在一起。
另外,不是使用start_season_id和end_season_id(如果该关系仍然有效,则end_season_id为NULL),Laravel公约是否会强迫我在每个运动/联赛/赛季的每项运动中每所学校获得1条记录? (这将直接加入season_id,而不是具有start / end_season_id列)
感谢您的帮助!
我可以简单地使用3个关系表:school_leagues,school_sports和League_sports,所有这些表都可以通过season_id(每年1条记录)或start / end_season_id加入赛季。
或者我将有1个主表连接到school_id,sport_id,season_id,League_id和(可选)League_division_id。每个实例会有1条记录,因此每年我都会生成一组新记录。
答案 0 :(得分:0)
Laravel / Eloquent为多对多关系提供了可服务的方案。 https://laravel.com/docs/5.8/eloquent-relationships#many-to-many在您的应用中,您具有几个多对多的关系,例如# Unrestricted model
model_u = lm(logwage ~ educ + abil + exper + motheduc + fatheduc +
broken + sib, data = koop2004)
# Restricted model
model_r = lm(Prc ~ LndSz, data = RealEstate)
# F-Test
require(data.table)
linearHypothesis(model_u, c( "HseSz = 0", "Bdrms = 0"))
。 Eloquent使用联接表(称为schools >----< sports
之类的形式在DBMS中表示该联接表。
要在这里处理复杂性,您可能在数据库设计中需要一个新的实体。我们称之为schools_sports
。每个学校,运动,季节和联赛都有一个。它与这些实体中的每个实体相关,并且可能具有诸如teamseason
,won
,lost
之类的属性以及与团队和赛季有关的其他数据点。
例如
2019年春季团队需要这些实体中的另一个实体。
一张桌子可能看起来像这样:
captain
我会进行除法运算,但是我不了解其结构。
这看起来可能是某种四向联接表,但不仅限于此。我添加了won / lost / captain属性,以强调它是它自己的实体。
诀窍是为应用程序世界中的每个真实事物确定一个实体,然后确定实体之间的关系。 (这需要练习才能做到。)