如何获取连接表数据并在php中传递内部数组

时间:2016-12-16 06:02:08

标签: php cakephp

我有两个表order和orderDetail。我在订单详细信息表中有多个交货地址,基于订单表的ID 我想显示来自订单表的delivery id和来自订单详细信息table的deliveryAddress。我在打印时收到以下输出..

但无法显示delivery_address.please任何人都可以建议我如何显示delivery_address ..

HTML

下面是我的代码

method

3 个答案:

答案 0 :(得分:0)

你可以尝试下面的代码。

foreach ($data as $key => $value) { 
    $c[] = array(
        'Order' => array(
            'id'=>$value['Order']['id'],
            'detail_location_instructions' => $value['Order']['detail_location_instructions'],
        ),
        'OrderDetail' => array(
            'order_id'=>$value['Order']['id'],
            'deliveryAddress' => $value['OrderDetail']['delivery_address'],
        ),
    )                              
} 

答案 1 :(得分:0)

您必须将deliveryAddress放在数组

$c = array();
foreach ($data as $key => $value) { 
    $myOrders = [
        'Id'=>$value['Order']['id'], 
        'deliveryAddress'=>[]
    ];

    foreach($value['OrderDetail'] as $address){
        $myOrders['deliveryAddress'][] = $address['delivery_address'];
    }
    $c[] = $myOrders;                                
}

希望这会有所帮助

答案 2 :(得分:0)

有些情况下您没有收到送货地址,在这种情况下,您需要先检查它是否存在。为此目的使用哈希实用程序。 我将数据转换为数组,以便让Hash类工作。

public function getOrderlist(){           
        if($this->processRequest){
            $err = false; 
            if(empty($this->requestData['id'])){
                $this->responceData['message'] = "Please provide User ID";
                $err = true;
            } 
            if(!$err){ 
                $id = trim($this->requestData['id']);
                $conditions = array('Order.user_id'=>$id); 
                $data =(array) $this->Order->find('all',array('conditions'=>$conditions)); 
                if(!empty($data)){   
                    $c = array();
                    foreach ($data as $key => $value) { 
                        $c[] = array(
                            'Id' => Hash::get($value, 'Order.id'),
                            'deliveryAddress' => current(Hash::extract($value, 'OrderDetail.{n}.delivery_address', array()))                                                 
                        );                                
                    } 
                }
                $this->responceData['result'] = $c;
                $this->responceData['status'] = 1;
            }
        }
    }