【发布时间】:2015-09-14 06:05:55
【问题描述】:
我正在尝试显示查询的结果,但无法按应有的方式显示。
我有两张桌子 - ordersheader 和 orderitems。
ordersheader 是订单表。它的结构是:
idOrder,idCustomer,createdDate,orderDueDate.
我的表'orderitems'包含每个订单的单独订单项。它具有以下结构:
orderitem_id,idOrder,item_number,eggSize,quantity,price.
这两个表在 idOrder 上连接。 ordersheader 中的一行对应于orderitems 中的许多行,因为一个订单中可能包含许多订单项。
我的问题是我无法正确显示它们。它必须像这样显示:
当您单击详细信息时,它应该如下所示:
现在,它们在新行上显示每个订单项,如下所示:
http://prntscr.com/7lworg 我必须使每个 idOrder 的结果显示在一行中。 我应该使用内部循环以及如何做到这一点? 我的模型是:
<?php
function getOrders(){
$date = new DateTime("now");
$curr_date = $date->format('Y-m-d');
$this->db->select('ordersheader.*,customer.name,orderitems.*');
$this->db->from('ordersheader');
$this->db->join('orderitems', 'orderitems.idOrder = ordersheader.idOrder');
$this->db->join('customer', 'customer.idCustomer = ordersheader.idCustomer');
$this->db->where('DATE(orderDueDate)', $curr_date);
$query = $this->db->get();
return $query->result();
我的看法是:
<?php
if($orderlist){
foreach($orderlist as $row) {
?> <tr class="overview">
<td><?php echo $row->idOrder; ?></td>
<td class="text-center"><img src="<?= base_url();?>/assets/images/tick.png"></td>
<td><?php echo $row->name; ?></td>
<td><?php echo $row->eggSize; ?></td>
<td><?php echo $row->quantity; ?></td>
<td>
<div class="progress">
<div class="progress-bar" role="progressbar" style="width: 60%;">
60%
</div>
</div>
</td>
<td>18:00</td>
<td><button type="button" class="btn btn-link btn-xs view-full-order">Full</button></td>
</tr> <?php for($i=0;$i<count($row->eggSize); $i++) { ?>
<tr class="full hide">
<td></td>
<td></td>
<td></td>
<td><?php echo $row->eggSize; ?></td>
<td><?php echo $row->quantity; ?></td>
<td>
<div class="progress">
<div class="progress-bar progress-bar-info" role="progressbar" style="width: <?php echo $rand; ?>%;">
<?php echo $rand; ?>%
</div>
</div>
</td>
<td>14:00</td>
<td></td>
</tr><?php } ?>
<?php } } ?>
</tbody></table>
【问题讨论】:
-
用
$this->db->where('DATE(ordersheader.orderDueDate)', $curr_date);试试你的qyery -
我做到了:$this->db->where('DATE(orderDueDate)', $curr_date);此列 orderDueDate 仅在表
ordersheader中。问题是每个订单有很多订单项,我想为每个订单将它们组合成一行。 -
在查询中使用 group by
-
我试过这个,但是当我使用 group by 时,它只显示 orderitems 中的一个 orderitem。我必须为每个订单都展示它们。
-
现在我在我的模型中添加了: $this->db->group_by('orderitems.idOrder');但是如何显示每个订单的所有 eggSize 呢?
标签: codeigniter