У меня есть контроллер, который я хочу сделать с переменной логикой и отправить его на ресурс, чтобы показать его в 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, и я больше не могу использовать данные.
да, извините за эту ошибку, его найти






чтобы принять дополнительные данные в ресурс, переопределите 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, и я не могу подробно использовать размещение, проверьте мой отредактированный вопрос, пожалуйста
Вы можете получить доступ к $data как $this->resource. Я обновил ответ.
нет, снова та же ошибка, я могу получить к ней доступ и добавить ее в конструкцию, но нет в toArray ($ request)
Теперь я заметил, что ваш $data на самом деле является коллекцией, а не отдельным объектом. Таким образом, вы не можете получить доступ к id из коллекции. Так что я понятия не имею, что вы пытаетесь сделать. Если вы сообщите нам, каков ваш ожидаемый результат, я могу помочь вам с вашим собственным кодом. Честно говоря, 'Как отправить дополнительные данные с контроллера на ресурс в laravel' уже ответил.
Честно говоря, да, вы правы :), я хочу показать все приспособления и, кроме того, в каждом из них показать пользовательское значение, вот и все.
->get(1)должно быть->find(1)??