我正在尝试显示查询结果,但我无法按原样显示它。
我有两个表 - ordersheader
和orderitems
。
ordersheader
是订单表。它的结构是:
idOrder
,idCustomer
,createdDate
,orderDueDate
。
我的表'orderitems'包含每个订单的单独订单项。它具有以下结构:
orderitem_id
,idOrder
,item_number
,eggSize
,quantity
,price
。
这两个表在ON idOrder上加入。 ordersheader
中的一行对应orderitems
中的许多行,因为一个订单中可能包含许多订单项。
我的问题是我无法正确显示它们。它必须如下所示:
当您单击“详细信息”时,它应该如下所示:
现在,他们会在新行上显示每个orderitem,如下所示:
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>
答案 0 :(得分:1)
<?php
function getOrders(){
$date = new DateTime("now");
$curr_date = $date->format('Y-m-d');
$this->db->select('ordersheader.*,customer.name,GROUP_CONCAT(orderitems.item_number SEPARATOR ",") as item_number');
$this->db->select('ordersheader.*,customer.name,GROUP_CONCAT(orderitems.priceSEPARATOR ",") as price');
$this->db->select('ordersheader.*,customer.name,GROUP_CONCAT(orderitems.eggSize SEPARATOR ",") as eggSize');
$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();
?>