Laravel如何使用$request除了嵌套数组



是否可以使用$request->除了在嵌套数组上?这是请求数据:

[▼
"id" => 1
"products" => array:1 [▼
0 => array:4 [▼
"id" => 1
"name" => "sample product"
"date" => "07/04/2022"
"frequency" => array:1 [ …1]
]
]
]

我的目标是删除一些键值对,例如删除id日期,频率和. 我想要的结果是:

[▼
"id" => 1
"products" => array:1 [▼
0 => array:1 [▼
"name" => "sample product"
]
]
]
到目前为止,我所尝试的是使用Arr:except功能:
$request->products = Arr::except($request->products['0'], ['id', 'date', 'frequency']);

但这应该适用于所有项目。假设我有两个item产品,期望的结果将是:

[▼
"id" => 1
"products" => array:2 [▼
0 => array:1 [▼
"name" => "sample product"
]
1 => array:1 [▼
"name" => "sample product 2"
]
]
]

需要你的意见,什么是最好的方法。谢谢你!

除非我错过了一些明显的东西,否则您可以不只是在$request对象中迭代products吗?

$filtered = [];
foreach ($request->products as $product) {
$filtered[] = Arr::except($product, ['id', 'date', 'frequency']);
}
dd($filtered);

导致$filtered含有:

^ array:2 [▼
"id" => 1
"products" => array:2 [▼
0 => array:1 [▼
"name" => "sample product"
]
1 => array:1 [▼
"name" => "sample product 2"
]
]
]

更新1

我可以看到$request except只在顶层工作

我不知道你说的是什么意思,因为上面的原则对我来说是有效的。

$filtered = [];
foreach ($request->products as $product) {
$filtered[] = Arr::except($product, ['id', 'date', 'frequency']);
}
$request->merge(['products' => $filtered]);

如果我在上面提供以下内容:

{
"id": 1,
"products": [
{
"id": 1,
"name": "sample product",
"date": "07/04/2022",
"frequency": []
},
{
"id": 2,
"name": "sample product 2",
"date": "07/04/2022",
"frequency": []
}
]
}

然后做一个dd($request->products);我得到:

^ array:2 [▼
0 => array:1 [▼
"name" => "sample product"
]
1 => array:1 [▼
"name" => "sample product 2"
]
]

最新更新