这是我的功能
public function listAllItems() {
return $item = Item::with('taxes', 'quantities')->first();
}
响应:
{
"name": "TARGUS LAPTOP BAG",
"category": "BAG",
"subcategory": "LAPTOP BACKPACK",
"brand": "TARGUS",
"item_number": "236550364000001",
"description": "",
"cost_price": "0.00",
"unit_price": "6999.00",
"reorder_level": "1.000",
"item_id": 1,
"deleted": 0,
"taxes": [
{
"item_id": 1,
"name": "CGST",
"percent": "9.0"
},
{
"item_id": 1,
"name": "SGST",
"percent": "9.0"
}
],
"quantities": [
{
"item_id": 1,
"location_id": 5,
"quantity": 0
},
{
"item_id": 1,
"location_id": 6,
"quantity": 0
}
]
}
现在,如果我们看一下税收和数量的内部对象。我必须使用索引访问它们。如何使用“名称”(如果是税收)作为对象的键,并使用“百分比”作为值。
我想获取问题中所示的整个项目的详细信息,但税额和数量应作为键:基于内部字段的值。
答案 0 :(得分:1)
您可以尝试以下方法:
$taxes = $item->taxes->pluck('percent', 'name');
$quantities = $item->quantities->pluck('percent', 'name');
答案 1 :(得分:1)
有几种方法可以解决这个问题,就个人而言,我将使用一个转换器来创建最终的输出数组。 Laravel的JsonResource类是用于这种数据操作的。
或者,您可以手动映射和合并项目和目标集合,例如:
$item = Item::with('taxes', 'quantities')->first();
$taxes = array_reduce($item->taxes, function ($taxes, $tax) {
return data_set($taxes, $tax->name, $tax->percent);
}, []);
$quantities = array_reduce($item->quantities, function ($quantities, $quantity) {
return data_set($quantities, $quantity->name, $quantity->quantity);
}, []);
$arr = array_merge($item->attributesToArray(), $taxes, $quantities);