Return 已选择 json 集合中的键
Return selected keys in collection for json
如您所见,我在控制器方法中有此数据我在方法中删除了一些键:
$foods = Food::get()->map(function($value){
return collect($value->toArray())->except('pivot', 'deleted_at', 'created_at', 'updated_at');
});
return HttpHelpers::sendJsonData($foods, 200);
和 api 响应 return 是这样的:
{
"success": true,
"data": [
{
"id": 1,
"title": "food1",
"default_price": 2353465456,
"main_meal": 1,
"labels": [
{
"id": 1,
"title": "type1",
"type": "food",
"created_at": "2018-08-23 03:55:33",
"updated_at": "2018-08-23 03:55:33",
"pivot": {
"labelable_id": 1,
"label_id": 1,
"labelable_type": "App\Models\Panel\Food"
}
}
]
},
{
"id": 2,
"title": "food2",
"default_price": 1000,
"main_meal": 0,
"labels": [
{
"id": 1,
"title": "type2",
"type": "food",
"created_at": "2018-08-23 03:55:33",
"updated_at": "2018-08-23 03:55:33",
"pivot": {
"labelable_id": 2,
"label_id": 1,
"labelable_type": "App\Models\Panel\Food"
}
}
]
}
]
}
现在我的问题是我不想 return 一些键,比如枢轴中的 labalable_id 和 labelable_type 以及标签中的 created_at,请给我最好的方法
如果数据响应来自存储过程,那么在这种情况下,您需要将 Pivot table 数据存储在临时的 table 和 select 所需的键中在 json.
中通过 API 要求并显示它
您可以使用 makeHidden 方法将数据隐藏到 JSON。还没有尝试过这段代码,但我认为它应该可以工作。
https://laravel.com/docs/5.6/eloquent-serialization#hiding-attributes-from-json
$foods = Food::get()->map(function($value){
foreach($value->labels as $label){
$label = $label->makeHidden(['created_at']);
$label->pivot = $label->pivot->makeHidden(['labelable_id', 'labelable_type']);
}
return collect($value->toArray())->except('pivot', 'deleted_at', 'created_at', 'updated_at');
});
如您所见,我在控制器方法中有此数据我在方法中删除了一些键:
$foods = Food::get()->map(function($value){
return collect($value->toArray())->except('pivot', 'deleted_at', 'created_at', 'updated_at');
});
return HttpHelpers::sendJsonData($foods, 200);
和 api 响应 return 是这样的:
{
"success": true,
"data": [
{
"id": 1,
"title": "food1",
"default_price": 2353465456,
"main_meal": 1,
"labels": [
{
"id": 1,
"title": "type1",
"type": "food",
"created_at": "2018-08-23 03:55:33",
"updated_at": "2018-08-23 03:55:33",
"pivot": {
"labelable_id": 1,
"label_id": 1,
"labelable_type": "App\Models\Panel\Food"
}
}
]
},
{
"id": 2,
"title": "food2",
"default_price": 1000,
"main_meal": 0,
"labels": [
{
"id": 1,
"title": "type2",
"type": "food",
"created_at": "2018-08-23 03:55:33",
"updated_at": "2018-08-23 03:55:33",
"pivot": {
"labelable_id": 2,
"label_id": 1,
"labelable_type": "App\Models\Panel\Food"
}
}
]
}
]
}
现在我的问题是我不想 return 一些键,比如枢轴中的 labalable_id 和 labelable_type 以及标签中的 created_at,请给我最好的方法
如果数据响应来自存储过程,那么在这种情况下,您需要将 Pivot table 数据存储在临时的 table 和 select 所需的键中在 json.
中通过 API 要求并显示它您可以使用 makeHidden 方法将数据隐藏到 JSON。还没有尝试过这段代码,但我认为它应该可以工作。
https://laravel.com/docs/5.6/eloquent-serialization#hiding-attributes-from-json
$foods = Food::get()->map(function($value){
foreach($value->labels as $label){
$label = $label->makeHidden(['created_at']);
$label->pivot = $label->pivot->makeHidden(['labelable_id', 'labelable_type']);
}
return collect($value->toArray())->except('pivot', 'deleted_at', 'created_at', 'updated_at');
});