2017-12-18 9 views
0

컨트롤러가 여러 어레이가있는 JSON 응답을 반환하고 싶습니다. 모든 (Return Response() -> Laravel의 Json과 Arrays

<?php 

public function notificationEmails(Request $request) 
{ 
    $shipment = Shipment::findOrFail($request->shipmentID); 
    $billToAccount = $shipment->billtoAccount; 
    $billToAccountUsers = $billToAccount->users; 

    foreach ($billToAccountUsers as $billToAccountUser){ 
     $billToEmail = $billToAccountUser->email; 
    }     

    $shipToAccount = $shipment->shiptoAccount; 
    $shipToAccountUsers = $shipToAccount->users; 

    foreach ($shipToAccountUsers as $shipToAccountUser){ 
     $shipToEmail = $shipToAccountUser->email; 
    } 

    $shipFromAccount = $shipment->shipfromAccount; 
    $shipFromAccountUsers = $shipFromAccount->users;  

    foreach ($shipFromAccountUsers as $shipFromAccountUser){ 
     $shipFromEmail = $shipFromAccountUser->email; 
    } 

    return response()->json([ 
        'details' => $shipment, 
        'billersEmails' => $billToEmail 
       ]); 
} 

이것은 예를 들어,하지만 난 그냥 ($ billToEmail를) dd는 경우이 시간에, 나는 여러 행이 내가 요청한 모든 데이터의 반환 얻을 것이다 : 첫째, 나는 내 컨트롤러를 소개합니다 그 중 일부는 전자 메일 임). 그러나 JSON의 특정 반환 인 "billersEmails"를 반환하면 반환 된 전자 메일 중 하나만받습니다.

여러 이메일이 반환 될 가능성이 있음을 알고 있지만 아직 어디에서나 적절한 응답을 찾지 못했습니다.

답변

1

여러 레코드가있는 배열을 사용해야합니다. 그렇지 않으면 기존 값을 덮어 씁니다. 다음과 같이 코드를 변경하십시오.

<?php 

public function notificationEmails(Request $request) 
{ 
    $shipment = Shipment::findOrFail($request->shipmentID); 
    $billToAccount = $shipment->billtoAccount; 
    $billToAccountUsers = $billToAccount->users; 
    $billToEmail = array(); 
    $shipToEmail = array(); 
    $shipFromEmail = array(); 
    foreach ($billToAccountUsers as $billToAccountUser){ 
     $billToEmail[] = $billToAccountUser->email; 
    }     

    $shipToAccount = $shipment->shiptoAccount; 
    $shipToAccountUsers = $shipToAccount->users; 

    foreach ($shipToAccountUsers as $shipToAccountUser){ 
     $shipToEmail[] = $shipToAccountUser->email; 
    } 

    $shipFromAccount = $shipment->shipfromAccount; 
    $shipFromAccountUsers = $shipFromAccount->users;  

    foreach ($shipFromAccountUsers as $shipFromAccountUser){ 
     $shipFromEmail[] = $shipFromAccountUser->email; 
    } 

    return response()->json([ 
        'details' => $shipment, 
        'billersEmails' => $billToEmail 
       ]); 
}