有些情况下你没有收到送货地址,在这种情况下,你需要检查它是否存在。为此目的使用哈希实用程序。 我将数据转换为数组,以便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; } } }
你可以尝试下面的代码。
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'], ), ) }
您必须将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; }
希望这会有所帮助