Удалить ненужные данные из результата API - PullRequest
0 голосов
/ 10 октября 2019

У меня есть проект в laravel, у которого есть API. Я прошу у API posts (я называю их рекомендацией).

Теперь мой ответ API выглядит следующим образом -

{
    "success": true,
    "data": {
    "current_page": 1,
    "data": [

        {
            "id": 3,
            "course_id": "20",
            "title": "Dormouse followed.",
            "description": "Alice aloud, addres
            "file": "https://example.com/storage/images/2019/10/01/phTJ.png",
            "created_at": null,
            "updated_at": "2019-10-01 14:21:46",
            "recommendation_likes": 0,
            "is_bookmarked": "true",
            "is_liked": "false",
            "likes_count": []
        }
...
...
...

Все хорошо, но я не хочу likes_count чтобы быть в результате. Это метод отношений. Я получаю от этого все, что мне нужно. Это если пользователю понравился этот пост. И это is_liked в результате. но likes_count автоматически добавляется в ответ.

 if($item->likesCount->contains($user->id)){
       $item['is_liked']='true';
 }

Я пытался удалить его с помощью

foreach ($recommendations as $item) {
      unset($item['likes_count']);
}

Но он этого не делает.

Ответы [ 2 ]

0 голосов
/ 10 октября 2019

Быстрый способ - скрыть этот «атрибут» (отношение):

$recommendations->makeHidden('likes_count');

Хотя я не уверен, как вы строите свой ответ.

0 голосов
/ 10 октября 2019

Я думаю, проблема в том, как вы ссылаетесь на структуру данных объекта. Вы пытаетесь unset() что-то, что не существует, поэтому не выдается никакой ошибки, но likes_count также не удаляется.

Вот ваш пример кода (исправлен и изменен для демонстрации):

<?php
$apiResult = <<<eod
{
    "success": true,
    "data": {
        "current_page": 1,
        "data": [

            {
            "id": 3,
            "course_id": "20",
            "title": "Dormouse followed.",
            "description": "Alice aloud, addres",
            "file": "https://example.com/storage/images/2019/10/01/phTJ.png",
            "created_at": null,
            "updated_at": "2019-10-01 14:21:46",
            "recommendation_likes": 0,
            "is_bookmarked": "true",
            "is_liked": "false",
            "likes_count": []
            },
            {
            "id": 4,
            "course_id": "20",
            "title": "Dormouse followed.",
            "description": "Alice aloud, addres",
            "file": "https://example.com/storage/images/2019/10/01/phTJ.png",
            "created_at": null,
            "updated_at": "2019-10-01 14:21:46",
            "recommendation_likes": 0,
            "is_bookmarked": "true",
            "is_liked": "false",
            "likes_count": []
            }
        ]
    }
}
eod;

$result = json_decode($apiResult);
$data = $result->data->data;
var_dump($data);

// This should remove the likes_count array from the $result structure.
foreach ($data as &$item) {
    unset($item->likes_count);
}
var_dump($data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...