Как отправить дополнительные данные с контроллера на ресурс в laravel - PullRequest
0 голосов
/ 01 мая 2019

У меня есть контроллер, который я хочу сделать некоторую логику для переменной и отправить его ресурсу, чтобы показать его в API, вот мой контроллер:

public function index()
{
    $data = Accommodation::with('accommodationFacilities')->paginate();
    $x = Accommodation::with('cities')->get(1);

    return new AccommodationResource($data);
}

, а вот ресурс: и сейчасна ресурсе я хочу показать $x в моем Api

public function toArray($request)
{
    return parent::toArray($request);
}

EDIT Если я хочу показать $x nexto для модели $data как я могу это сделатьэто как показано ниже:

public function toArray($request)
{
    return [
        'id' => $this->id,
        'X'  => $this->x,
    ];
}

вызвать сейчас это дает мне следующую ошибку:

Неопределенное свойство: Illuminate \ Pagination \ LengthAwarePaginator :: $ id и когда я удаляю пагинациюэта ошибка:
вызов неопределенного метода Illuminate \ Database \ Eloquent \ Builder :: all ()

, так как я пытался $x заменяет $ data, и я не могу использовать данныебольше.

1 Ответ

1 голос
/ 01 мая 2019

, чтобы принять дополнительные данные к ресурсу, переопределить constructor ресурса.

AccommodationResource

public $x;

public function __construct($resource, $x)
{
    parent::__construct($resource);
    $this->x = $x;
}

public function toArray($request)
{
    // you can use '$this->x' here.

    return [
        'id' => $this->resource->id,
        'x' => $this->x,
    ];
}

Контроллер

return new AccommodationResource($data, $x);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...