PHP组由foreach循环

时间:2016-12-28 20:18:52

标签: php mysql laravel

有一些问题可视化如何为每个循环实现这一点,并且不确定在何处进行澄清。

我有一个包含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)

Page:显示第1项和第2项。

在此页面上查询来自DB的所有链接,现在需要对它们进行分组,以便将它们放在一个表中,由商店分组。这有意义吗?

有关如何获得此结果的任何建议?我正在使用Laravel,Eloquent和Blade。

1 个答案:

答案 0 :(得分: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代码示例,但希望这至少会显示出一种方式背后的想法你可以做到这一点。

我认为,因为理论上可以在没有商品的商店或任何商店中没有商品的情况下,如果您想在数据库中完成所有这些操作,那么d需要类似全外连接的东西,据我所知,MySQL并没有做到这一点。可能还有其他方法可以实现它,如果有更好的数据库人员有想法,我有兴趣看到这样的答案。