Как поместить некоторые отношения в настраиваемое поле в ответе HTTP в Laravel 6? - PullRequest
0 голосов
/ 21 июня 2020

Я работаю с проектом Laravel 6.x, и мне нужно изменить формат ответа. Мне нужно поместить результаты своих отношений цен в поле prices в ответе JSON.

У меня есть модель продукта со следующими отношениями:

public function sellingPrices() {
    return $this->morphToMany(SellingPrice::class, 'product_variantables');
}

public function supplyingPrices() {
    return $this->morphToMany(SupplyingPrice::class, 'product_variantables');
}

public function supplierListPrices() {
    return $this->morphToMany(SupplierListPrice::class, 'product_variantables');
}

А вот текущий код с моего контроллера:

public function index() {
    return Product::with([
        'orderStatus',
        'files',
        'properties',
        'sellingPrices',
        'suppyingPrices',
        'supplierListPrices',
        ])->get();
}

Конечно, это возвращает следующий результат:

{
  "id": 1,
  "name": "My Product",
  "order_status": { ... },
  "files": [],
  "properties": [],
  "selling_prices": [],
  "supplying_prices": [],
  "supplier_list_prices": []
}

Как лучше всего сказать Laravel Я хочу вернуть этот результат?

{
  "id": 1,
  "name": "My Product",
  "order_status": { ... },
  "files": [],
  "properties": [],
  "prices": {
    "selling_prices": [],
    "supplying_prices": [],
    "supplier_list_prices": []
  }
}

Как я могу поместить некоторые отношения в настраиваемое поле в ответе HTTP?

1 Ответ

0 голосов
/ 21 июня 2020

Вы можете решить вашу проблему с помощью ресурсов API. Это простой и лучший способ. Так что дополнительная информация проверьте Ресурсы API

...