显示查询中的数据 - 我无法正确显示

时间:2015-06-27 10:10:25

标签: codeigniter

我正在尝试显示查询结果,但我无法按原样显示它。 我有两个表 - ordersheaderorderitems

ordersheader是订单表。它的结构是: idOrderidCustomercreatedDateorderDueDate

我的表'orderitems'包含每个订单的单独订单项。它具有以下结构: orderitem_ididOrderitem_numbereggSizequantityprice

这两个表在ON idOrder上加入。 ordersheader中的一行对应orderitems中的许多行,因为一个订单中可能包含许多订单项。 我的问题是我无法正确显示它们。它必须如下所示:

http://prntscr.com/7lwnz7

当您单击“详细信息”时,它应该如下所示:

http://prntscr.com/7lwoan

现在,他们会在新行上显示每个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>

1 个答案:

答案 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();
    ?>