【问题标题】:Attach data to Response in Laravel将数据附加到 Laravel 中的响应
【发布时间】:2021-05-26 21:10:02
【问题描述】:

我正在开发一个返回与两个 id 相关的信息的函数。我想在成功消息之后将这些 ID 附加到响应中。这是我的代码:

调用存储库中另一个的控制器函数(工作正常)

public function getCampaignEstablishments($lang, $campaignId, $companyId)
    {
        $establishments = $this->repository->allEstablishments($campaignId, $companyId);
      
        return CampaignEstablishments::collection($establishments);
    }

过滤数据的资源函数(用于测试显示所有数据)

class CampaignEstablishments extends PotatoesResource
{
    const SINGLE_KEY = 'establishment';
    const COLLECTION_KEY = 'establishments';

    public function toArray($request)
    { 

        return parent::toArray($request);

    }
}

这是导入的集合资源

    public static function collection($collection)
    {
        $subclass = get_called_class();

        return self::baseResource(
            $subclass::COLLECTION_KEY,
            parent::collection($collection)
        );
    }

    public static function baseResource($key, $value)
    {
        return [
            'success' => true,
            $key => $value
        ];
    }

目前我正在收到此回复

{
    "success": true,
    "establishments": [
        {
            /*Data of an establishment*/
        },
        {
            /*Data of an establishment*/
        },
        {
            /*Data of an establishment*/
        }
    ]
}

这是我想要得到的回应

{
    "success": true,
    "campaign_id": /*the id passed in $campaignId*/
    "company_id": /*the id passed in $companyId*/
    "establishments": [
        {
            /*Data of an establishment*/
        },
        {
            /*Data of an establishment*/
        },
        {
            /*Data of an establishment*/
        }
    ]
}

我尝试了很多不同的方法,得到了很多不同的结构,但不是特别是这个。有没有可能做到这一点?

【问题讨论】:

    标签: arrays json laravel filter response


    【解决方案1】:

    你只需要在一个关联数组中返回它:

    return [
        "success" => true,
        "campaign_id" => $campaignId,
        "company_id" => $companyId,
        "establishments" => CampaignEstablishments::collection($establishments),
    ];
    

    更新:那么你需要这样做:

    $establishments = CampaignEstablishments::collection($establishments);
    $establishments['campaign_id'] = $campaignId;
    $establishments['company_id'] = $companyId;
    
    return $establishments;
    

    【讨论】:

    • 它可能会返回到您的 AJAX 调用,例如 response.data.establishments
    • 我试过这个,但我得到了重复的结果。然后我发现 CampaignEstablishments 已经返回“成功”和“机构”。
    • 如果它是一个数组,你可以添加其他项目
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多