在一周的时间里,我每天都重新改写一切。由于无法正确设计数据库,因此卡在一个地方。事实证明,一切似乎都是正确的,但是在完成时,我遇到了错误的结构。
有3张表:
制造商。
- 有id和name。
收藏。
—有id和。manufacturer_idname
颜色。
—有id和。collection_idname
逻辑:
一个制造商可以有多个系列。一个集合可以属于一个制造商。一个集合可以有多种颜色。一种颜色只能属于一个系列。
我必须马上说,颜色不是通常意义上的颜色,而是物理的东西。如果它是一种通常意义上的颜色,那么一种颜色可以属于不同的系列是合乎逻辑的,但事实并非如此。在我们的例子中,颜色是我们用作未命名项目的名称。集合不是 Laravel 意义上的集合,而只是表和模型的名称。
— 1. Производитель.
— — 1. Коллекция.
— — — 1. Цвет.
— — 2. Коллекции.
— — — 2. Цвет.
— 2. Производитель.
— — 3. Коллекция.
— — — 3. Цвет.
— — 4. Коллекция.
— — — 4. Цвет.
hasMany()使用关系(一对多)似乎是合乎逻辑的,但事实证明它有点复杂。
页数:
我们不知道颜色和系列。我们只看到他们的总数。
(Страница производителя)
Производитель — Коллекции — Цвета
Имя_____________2(две)______2(два)
(Страница коллекции)
Производитель — Коллекции — Цвета
Имя_____________Имя_________1(один)
Имя_____________Имя_________1(один)
当我们打开彩页时。
(Страница цвета)
Производитель — Коллекции — Цвета
Имя_____________Имя_________Имя
Имя_____________Имя_________Имя
在制造商的页面上,一切都非常简单明了。我们可以通过 将制造商模型链接到收藏模型hasMany(),并通过 链接到花卉模型hasManyThrough()。然后我们可以使用 计算该制造商的系列和颜色总数withCount()。
在收藏页面上,一切都非常简单。我们对制造商的模型有反馈,belongsTo()并通过hasMany(). 我们withCount()用来计算属于这个集合的颜色总数。
花页是死胡同。我们可以得到颜色所属的集合,因为我们有来自集合的反馈belongsTo(),但我们没有来自生产者模型的反馈。Laravel 对hasManyThrough().
事实证明,要么我解决这个问题的设想显然不正确,要么是数据库结构有问题。这是我的第一次开发经验,所以我想做正确的事,而不仅仅是做如何做。你将如何解决这个问题?最好有最正确的解决方案,以免教初学者不好。但是,我很乐意接受任何想法和建议。
你有
belongsTo()从颜色到收藏,你belongsTo()从收藏到制造商。如果您需要一个集合并且需要预先加载
数据库结构正确。以下是 SQL 查询:
制造商页面:
收藏页面
彩页