Eloquent Resource с двумя возможными сводными таблицами - элегантный способ возврата значений - PullRequest
0 голосов
/ 16 октября 2019

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

Вот как я это делаю в данный момент:

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Http\Resources\PotentiallyMissing;


class CarAttributeResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return array
     */
    public function toArray($request)
    {
        return [
            'id'         => $this->id,
            'title'      => ($title
                = $this->whenPivotLoaded('car_car_attribute',
                function () {
                    return (boolean)$this->pivot->custom === true
                        ? $this->pivot->title : $this->title;
                })) instanceof PotentiallyMissing
            && $title->isMissing() ? (($title_ppa
                = $this->whenPivotLoaded('car_bundle_car_bundle_attribute',
                function () {
                    return (boolean)$this->pivot->custom === true
                        ? $this->pivot->title : $this->title;
                })) instanceof PotentiallyMissing
            && $title_ppa->isMissing() ? $this->title : $title_ppa) : $title,
        ];
    }
}

Выглядит не очень хорошо, верно?

Ребята, вы видите какие-нибудь возможности сделать это? более элегантно и читабельно?

...