PHP Group by foreach循环

杰米·000012

在可视化如何为每个循环实现此功能方面存在一些问题,并且不确定要去哪里进行澄清。

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

在此页面上从数据库查询所有链接,现在需要将它们分组,这样我就可以将它们放在一个按商店分组的表中。这有意义吗?

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

不要惊慌

听起来您并不是真正地在要求代码,而仅仅是关于如何执行此操作的一般想法。这是一种应该起作用的方法,也许是我将如何尝试做到的方法。我将执行两个查询,第一个查询获取所有商品,然后一个离开的商店将商店连接到链接(这样您便获得了所有商店以及与每个商店相关联的任何链接。)

循环这些项目一次以生成列标题。然后,对于每个商店,再次遍历商品以在商店行中生成单元格。对于每个项目,如果商店有该项目的链接,则打印一个链接;如果商店没有该项目的链接,则打印一个空白单元格。这样,无论该商店是否有商品,您都将在每个商店行中为每个商品设置一列。

伪代码:

<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)之类的东西。据我所知没有做。可能还有其他方法可以完成它,并且如果某个擅长数据库的人有一个主意,我很想看到这样的答案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章