2016-12-28 149 views
1

有一些問題可視化如何爲每個循環實現此功能,並且不確定要向哪裏澄清。PHP Group by foreach循環

我有一個數據庫與3表:數據庫,商店,鏈接。

鏈接連接到商店,物品,商品和商店是單獨的表,因此鏈接有屬於商店並屬於商品關係。

在其中顯示兩個具體項目,我在尋找最終結果的頁面是這樣的:

Shop  | Item 1 | Item 2 - table headings 
--------- | ------ | ------- 
Shop-name | Link | Link 

要試圖澄清一點多我想做的事:

Item[TABLE] 
Item 1 
Item 2 

Shop[TABLE] 
Shop 1 
Shop 2 

Links[TABLE] 
Link 1 (belongs to item 1 and shop 1) 
Link 2 (belongs to item 2 and shop 1) 

頁:顯示項目1和項目2

查詢從DB此頁面上的所有鏈接,現在需要將它們分組以這樣的方式,我讓他們在一個表,由本店分組。這有意義嗎?

有關如何獲得此結果的任何建議?我正在使用Laravel,雄辯和刀鋒。

+0

您的預期成果是什麼?也許你應該寫一些商店/項目/鏈接的例子和你期望的結果的例子,它也會幫助我們。 –

+0

這看起來更像是一個數據庫查詢問題,而不是php – Kisaragi

+0

@NicolasRacine預期的結果就像顯示的那樣,一個商店的表格中包含與頁面上的項目相關的鏈接。每個頁面都顯示兩個特定項目,所以我需要顯示一個包含這些產品所有可用鏈接的表格。我一直纏着我的問題是,我認爲我不能按商店分組,因爲我首先查詢了這兩個商品的鏈接,而不是商店。對於上下文,我還在同一頁面上顯示項目的規格,我在這裏獲得幫助:http:// stackoverflow。com/questions/35526344/laravel-eloquent-splitting-into-array – Jamie000012

回答

1

這聽起來像你並不真正要求代碼,但更多隻是一個如何做到這一點的一般想法。這是應該工作的一種方式,也許我會如何嘗試去做。我會執行兩個查詢,第一個是獲取所有項目,然後是一個離開商店到鏈接(所以你得到所有的商店,以及任何與每個鏈接相關的鏈接。)

將項目一次循環到生成列標題。然後,對於每個商店,再次循環這些商品以生成商店行中的單元格。對於每件商品,如果商店有該商品的鏈接,則打印鏈接;如果商店沒有該商品的鏈接,則打印一個空白單元格。通過這種方式,每個商店排中的每個商品都會有一列,無論該商店是否有該商品。

僞代碼:

<tr> 
foreach items 
    print <th>item name</th> 
</tr> 

foreach shops 
    <tr> 
     <td>shop name</td> 
     foreach items 
      <td>if item has link in shop->links print link</td> 
    </tr> 

至於怎麼做雄辯查詢和其他細節,這是很難給出一個真實的PHP代碼示例,沒有看到更多的東西,你已經有了,但希望這將顯示在最不重要的是你可以完成這個任務。

我認爲,因爲理論上可能有一家沒有物品的商店或者沒有任何商店的物品,如果你想在數據庫中完成所有這些,你需要一個完整的外部物品加入,據我所知MySQL並沒有這樣做。可能有其他方法來完成它,如果有人更擅長數據庫的東西有一個想法,我會有興趣看到這樣的答案。

+0

感謝您的建議,這非常有幫助,我會對這個想法進行修改。準確的代碼不是必需的,我只是無法將我的頭包裹在更復雜的循環中,但如果我編寫了僞代碼,我通常可以弄清楚它!我會回到這個。 – Jamie000012

+0

祝你好運!請讓我知道是否有任何需要澄清的地方,我會盡力改進答案。 –