在 Laravel 中返​​回 Response()->Json 和数组

Mat*_*hew 1 php ajax json laravel laravel-5

我有一个控制器,我想返回一个包含多个数组的 JSON 响应。首先,我将展示我的控制器:

<?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
                ]);
}
Run Code Online (Sandbox Code Playgroud)

这是一个例子,但此时如果我只是 dd($billToEmail),我会得到我请求的所有数据的多行返回(所有这些都是电子邮件),但是当我返回 JSON 特定返回“bilersEmails ",我只收到其中一封电子邮件的回复。

我知道肯定有可能返回多封电子邮件,但到目前为止我还没有在任何地方找到合适的回复。

B. *_*sai 6

您必须使用数组,因为您有多个记录,否则它会覆盖现有值。更改您的代码如下:

<?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
                ]);
}
Run Code Online (Sandbox Code Playgroud)