这是我的第二个问题:
我确实有这个mysql表:
类别:
现在我希望按类别分组并按名称排序以获得如下输出:
我尝试过:
<div class="grid js-masonry" data-masonry-options='{ "itemSelector": ".grid-item", "columnWidth": 205 }'>
<?php
$category= ORM::for_table('category')->group_by('catnom')->find_many();
foreach ($category as $cat):
$prods = ORM::for_table('products')->order_by_asc('name')->where('idcat', $cat->id)->find_many();
?>
<div class="grid-item" style="width: 180px">
<table class="table table-hover table-nomargin table-condensed">
<thead>
<tr>
<td><?php echo $cat->name?></td>
</tr>
</thead>
</table>
</div>
<?php endforeach; ?>
</div>
[IdiORM]
但它只显示一个类别而不是所有类别。有任何建议如何使这个工作?
答案 0 :(得分:0)
foreach ($category as $cat):
$prods = ORM::for_table('products')->order_by_asc('name')->where('idcat', $cat->id)->find_many();
在这段代码中,你在循环的每次迭代中都覆盖了变量$prods
,所以最后你只能获得最后一个循环类别的产品。
你可以这样做:
foreach ($category as $cat):
$prods[$cat->id] = ORM::for_table('products')->order_by_asc('name')->where('idcat', $cat->id)->find_many();
现在每组产品都存储在$ prods数组中,只要您想要获取特定类别的产品,就可以使用$prods[{id}]
,其中{id}
是您想要的类别ID为了获得产品。
答案 1 :(得分:0)
按照catnom分组只会,正如您已经看到的那样,为每个猫咪提供一个类别,并且它应该像那样工作。 &#34;分组&#34;你指的是另一回事。你真正需要做的是通过catnom然后按名称订购。换句话说:
$category= ORM::for_table('category')->find_many();
foreach ($category as $cat):
ORM::for_table('products')->order_by_asc('catnom')->order_by_asc('name')->where('idcat', $cat->id)->find_many();
我尝试将此作为评论发布,但在代码格式上过于苛刻。我还是新手。