【发布时间】:2017-02-28 23:20:48
【问题描述】:
我目前有 2 个表格:Artists 和 Genres。
流派使用artist_id 连接到艺术家。 phpmyadmin流派表设置如下:
1s 表示 id=3 的艺术家,使用复选框选择了古典和说唱。
我想有效地显示一张卡片,它将在列表中显示艺术家流派。对于 artist_id = $id 的行中的每个 1,输出所有流派(在我们的例子中,古典和说唱)。
我正在考虑创建一个名为artistgenre 的新对象,并使用new artistgenre(); 创建一个新对象并分配属性。也许我什至不需要这样做。目前我有一个名为艺术家的对象,我创建$artist = Artist::findbyid($sessionid); 并使用$artist->name; $artist->location; 从数据库中输出数据。
【问题讨论】:
-
db-design 效率不高,恕我直言。流派表应该(仅)有
id, genre_name。然后有另一个表将艺术家与流派 n2n 联系起来。 (arist_id, genre_id) -
@Jeff 我明白你的意思,我在genre_name 中列出了所有类型,每个类型都有一个单独的ID。然后使用(id,artist_id,genre_id)创建另一个名为artistgenre 的第三个表,并获取artist_id=$id 的结果。我不明白我将如何检索这些数据,如果我有另一个像仪器这样的表格会发生什么?是否可以使用 1 个表格来列出艺术家演奏的流派和乐器?
-
@GRS Jeff 关于设计的评论是正确的。对于 Instruments,您将重复该模式,例如创建一个名为 artist_instrument 的表。要检索相关记录,您需要使用 SQL 连接。看起来你正在使用 Eloquent,所以我建议你在这里阅读整个页面:laravel.com/docs/5.4/eloquent-relationships
-
@JoeNiland 谢谢,我没有使用 laravel,只有基本的 php 和 mysql。我设法通过使用 SELECT Genres_id FROM Artists JOIN artist_genres ON Artists.id=artist_genres.artist_id 获得了艺术家播放的流派列表。现在这给了我一个genre_ids 列表,我需要将它链接到genre 表,并通过php 导出到一个数组或类似的东西中。你能建议我正确的方法吗?
-
换句话说,我需要从上一个 SQL 查询中导出genre_name wheregenre_id= list of id's