Могу ли я отображать вложенные отношения в ресурсах Laravel?Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Могу ли я отображать вложенные отношения в ресурсах Laravel?

Сообщение Anonymous »

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

Код: Выделить всё

class Report extends BaseModel
{
public function reportCountries(): HasMany
{
return $this->hasMany(ReportCountry::class, 'report', 'id');
}
}

class ReportCountry extends BaseModel
{
public function report(): BelongsTo
{
return $this->belongsTo(Report::class, 'report', 'id');
}

public function countryEntity(): BelongsTo
{
return $this->belongsTo(Country::class, 'country', 'id');
}
}

class Country extends BaseModel
{
protected $table = 'countries';
}
Контроллер:

Код: Выделить всё

class ReportsController
{
public function show(int $id): ReportResource
{
$report = Report::with(['reportCountries.countryEntity'])->findOrFail($id);

return new ReportResource($report);
}
}

И, наконец, ресурсы:

Код: Выделить всё

/**
* @mixin Report
*/
class ReportResource extends JsonResource
{
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'countries' => ReportCountryResource::collection($this->whenLoaded('reportCountries')), // I'd love to use CountryResource here instead
// bunch of other data
];
}
}

/**
* @mixin ReportCountry
*/
class ReportCountryResource extends JsonResource
{
public function toArray(Request $request): array
{
return [
'id' => $this->id, // I don't really need to show this, I'm interested only in CountryResource below:
'country' => new CountryResource($this->whenLoaded('countryEntity')),
];
}
}

/**
* @mixin Country
*/
class CountryResource extends JsonResource
{
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'title' => $this->title,
];
}
}

Я бы хотел игнорировать ReportCountryResource и загружать CountryResource непосредственно в ReportResource, примерно так:

Код: Выделить всё

/**
* @mixin Report
*/
class ReportResource extends JsonResource
{
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'countries' => CountryResource::collection($this->whenLoaded('reportCountries.countryEntity')),
// bunch of other data
];
}
}
Но когда я попытался загрузить таким образом, CountryResource отображал данные из сводной таблицы (

Код: Выделить всё

ReportCountryResource
), а не из основной модели (

Код: Выделить всё

CountryResource
).
Есть ли способ это сделать? Сейчас я создаю кучу ресурсов для сводных моделей, которые мне на самом деле не нужны :/

Подробнее здесь: https://stackoverflow.com/questions/790 ... -resources
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Могу ли я отображать вложенные отношения в ресурсах Laravel?
    Anonymous » » в форуме Php
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Могу ли я отображать вложенные отношения в ресурсах Laravel?
    Anonymous » » в форуме Php
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Сгладить вложенные отношения laravel (от родителя к потомкам)
    Anonymous » » в форуме Php
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Отображать изображения из ресурсов блейда, но не отображать изображения из ссылок браузера laravel laravel 9
    Anonymous » » в форуме Php
    0 Ответы
    106 Просмотры
    Последнее сообщение Anonymous
  • Sqlalchemy contains_eager не загружает вложенные отношения
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»