将数据附加到 Laravel 中的响应

Attach data to Response in Laravel

我正在研究 returns 与两个 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*/
        }
    ]
}

我尝试了很多不同的方法,得到了很多不同的结构,但不是这个。有可能实现吗?

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

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;