2017-02-28 60 views
0

我目前有2張表:藝術家和流派。如何從數據庫表中檢索基於1和0的表?

流派通過artist_id與藝術家連接。 phpMyAdmin的流派表被設置如下:

enter image description here

1S指示與ID = 3藝術家,已經使用複選框選擇古典和說唱。

我想高效地顯示一張卡片,它將在列表中顯示藝術家流派。對於artist_id = $ id這一行中的每一個,輸出所有流派(在我們的例子中,古典和說唱)。

我正在考慮創建一個名爲artistgenre的新對象,並使用new artistgenre();來創建一個新對象並分配屬性。也許我甚至不需要那樣做。目前我有一個名爲藝術家的對象,我創建了$artist = Artist::findbyid($sessionid);並使用$artist->name; $artist->location;輸出數據庫中的數據。

+1

的DB-設計效率不高,恕我直言。流派表應該(僅)具有'id,genre_name'。然後有另一張表將藝術家與流派n2n連接起來。 (帶'arist_id,genre_id') – Jeff

+0

@Jeff我明白你的意思,我列出genre_name中的所有流派,每個流派都有一個單獨的id。然後用(id,artist_id,genre_id)創建另一個名爲artistgenre的第三張表,並獲取artist_id = $ id的結果。我不明白我是如何檢索這些數據的,以及如果我解釋了另一個表格如儀器會發生什麼情況?是否可以使用單張表格來列出藝術家演奏的流派和樂器? – GRS

+0

@GRS Jeff對設計的評論是正確的。對於樂器,您可以重複該模式,例如創建一個名爲artist_instrument的表。要檢索相關記錄,您需要使用SQL連接。它看起來像你使用雄辯,所以我建議你閱讀整個頁面在這裏:https://laravel.com/docs/5.4/eloquent-relationships –

回答

0

我覺得這個查詢你所需要的:

SELECT g.id, g.name 
FROM artists a 
    INNER JOIN artist_genres ag ON a.id = ag.artist_id 
    INNER JOIN genres g ON ag.genre_id = g.id 
相關問題