我有两个表order和orderDetail。我在订单详细信息表中有多个交货地址,基于订单表的ID 我想显示来自订单表的delivery id和来自订单详细信息table的deliveryAddress。我在打印时收到以下输出..
但无法显示delivery_address.please任何人都可以建议我如何显示delivery_address ..
HTML
下面是我的代码
method
答案 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;
}
}
}