Как отправить дополнительные данные с контроллера на ресурс в laravel

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

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

    return new AccommodationResource($data);
}

а вот ресурс: а теперь в ресурсе хочу показать $x в своем апи

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

РЕДАКТИРОВАТЬ Если я хочу показать данные $x рядом с моделью $data, как я могу сделать это, как показано ниже:

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

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

Undefined property: Illuminate\Pagination\LengthAwarePaginator::$id and when i remove the pagination this error apear :
Call to undefined method Illuminate\Database\Eloquent\Builder::all()

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

->get(1) должно быть ->find(1)??

Rwd 01.05.2019 19:50

да, извините за эту ошибку, его найти

Farshad 01.05.2019 20:51
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
2
740
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

РазмещениеРесурс

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);

что, если я хочу показать его рядом с другими элементами, как я вижу сейчас, он помещает переменную $x в $resource, и я не могу подробно использовать размещение, проверьте мой отредактированный вопрос, пожалуйста

Farshad 01.05.2019 18:55

Вы можете получить доступ к $data как $this->resource. Я обновил ответ.

Tharaka Dilshan 01.05.2019 19:17

нет, снова та же ошибка, я могу получить к ней доступ и добавить ее в конструкцию, но нет в toArray ($ request)

Farshad 01.05.2019 19:37

Теперь я заметил, что ваш $data на самом деле является коллекцией, а не отдельным объектом. Таким образом, вы не можете получить доступ к id из коллекции. Так что я понятия не имею, что вы пытаетесь сделать. Если вы сообщите нам, каков ваш ожидаемый результат, я могу помочь вам с вашим собственным кодом. Честно говоря, 'Как отправить дополнительные данные с контроллера на ресурс в laravel' уже ответил.

Tharaka Dilshan 02.05.2019 02:53

Честно говоря, да, вы правы :), я хочу показать все приспособления и, кроме того, в каждом из них показать пользовательское значение, вот и все.

Farshad 02.05.2019 06:49

Другие вопросы по теме