Вернуть выбранные ключи в коллекцию для JSON - PullRequest
0 голосов
/ 27 августа 2018

У меня есть эти данные в методе контроллера, как вы видите, я удалил некоторые ключи в методе:

$foods = Food::get()->map(function($value){
  return collect($value->toArray())->except('pivot', 'deleted_at', 'created_at', 'updated_at');
});

return HttpHelpers::sendJsonData($foods, 200);

, и ответ API возвращает это:

{
    "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"
                    }
                }
            ]
        }
    ]
}

Теперь моя проблемачто я не хочу возвращать некоторые ключи, такие как labalable_id и labelable_type в pivot и made_at в ярлыках, предложите мне лучший способ

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Вы можете использовать метод 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');
});
0 голосов
/ 27 августа 2018

Если ответ на данные проходит через хранимую процедуру, то в этом случае вам необходимо сохранить данные таблицы Pivot во временной таблице, выбрать необходимые ключи и отобразить их через API в json.

...