2017-12-18 4 views
0

複数の配列を持つJSONレスポンスを返すコントローラがあります。まず、私は私のコントローラを提示します:リターンレスポンス() - > JsonとArrays in Laravel

<?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の場合、この時点で、私は複数の行には、(すべてのIが要求されたデータのすべてを返されます私はJSONの特定のリターン "billersEmails"を返すと、返された電子メールのうちの1つだけを返します。

複数の電子メールが返される可能性があることは知っていますが、まだどこかで適切な応答が見つかりませんでした。

答えて

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 
       ]); 
}