2017-12-18 123 views
0

我有一個控制器,我想返回具有多個陣列的JSON響應。首先,我將介紹我的控制器:返回響應() - > JSON和陣列中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 
       ]); 
} 

這是一個例子,但如果我只是DD($ billToEmail)這個時候,我會得到多行返回的所有,我請求的數據(全其中的電子郵件),但是當我返回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 
       ]); 
}