Пользовательские данные сериализации на Laravel - PullRequest
0 голосов
/ 08 ноября 2018

это мой первый пост. У меня проблема с моим приложением Laravel. Мне нужно изменить сериализацию данных для моей конечной точки, чтобы получить данные конкретного велосипеда. Конечная точка возвращает это:

{"bike":{"id":32,
         "unlock_code":2342,
         "rack": {"id":3,
                  "available_stands":10,
                  "latitude":"46.754",
                  "longitude":"8.5732",
                  "available_bikes":10
                },
        "bike_state":{"description":"Available"}
        }
}

но я хочу иметь это:

{"bike":{"id":32,
         "unlock_code":2342,
        "rack":{"id":3,
                "available_stands":10,
                "latitude":"46.754",
                "longitude":"8.5732",
                "available_bikes":10
                },
        "bike_state":{"Available"}
        }
}

имя поля («описание») должно быть скрыто. Впервые я использую Laravel, и я не знаю, возможно ли это сделать.

Это модель

class BikeState extends Model
{
    protected $hidden = ['id'];

    public function bikes() 
    {
        return $this->hasMany('App\Bike');
    }
}

это хранилище с методом извлечения данных:

class BikeRepository 
{
    public function findBikeById($id)
    {
    return Bike::with('rack','bikeState')->findOrFail($id);
    }
}

а это контроллер

class BikeController extends Controller
{
     private $bikeRepository;

     public function __construct(BikeRepository $bikeRepository)
     {
          $this->bikeRepository = $bikeRepository;
     }

     public function getBike($id)  
     {
          return response() ->json(['bike' => $this -> bikeRepository -> 
          findBikeByid($id)], 200);
     }
}

Спасибо

1 Ответ

0 голосов
/ 08 ноября 2018

Создайте аксессор на вашей модели велосипеда , например:

public function getBikeStateAttribute($value)
    {
        return json_encode($this->attributes['description']);
    }

Затем добавьте аксессор в массив Bike модели следующим образом:

protected $appends = ['bike_state'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...