簡體   English   中英

Laravel API 資源

[英]Laravel Api Resource

我正在嘗試使用 Laravel 的資源為我的數據表創建 API。 我有三個有關系的模型。 每次我點擊我的 api 路由來檢查結果時,我的 sub_specializations 都會得到一個空值。 這是已經 JSON 格式的結果。

    { 
"data":[ 
    { 
        "first_name":"Rusty",
        "last_name":"Ferry",
        "specializations":{ 
            "specialization_id":11,
            "specialization_name":"Endocrinology"
        },
        "sub_specializations":null
    },
    { 
        "first_name":"Nadia",
        "last_name":"Ondricka",
        "specializations":{ 
            "specialization_id":22,
            "specialization_name":"ENT"
        },
        "sub_specializations":null
    },
    { 
        "first_name":"Erich",
        "last_name":"Torphy",
        "specializations":{ 
            "specialization_id":2,
            "specialization_name":"Cardiologist"
        },
        "sub_specializations":null
    }
    ]
}

這是我所有的資源。 這是醫生資源

    public function toArray($request)
{
    return [
        'first_name' => $this->first_name,
        'last_name'  => $this->last_name,
        'specializations' => new SpecializationsResource($this->specializations),
        'sub_specializations' => new SubSpecializationsResource($this->sub_specializations),
    ];
}

專業資源

    public function toArray($request)
{
    return [
        'specialization_id' => $this->specialization_id,
        'specialization_name' => $this->specialization_name,
    ];

}

子專業

    public function toArray($request)
{
    return [
        'sub_specialization_id' => $this->sub_specialization_id,
        'sub_specialization_name' => $this->sub_specialization_name,
        'doctors' => new DoctorsResource($this->doctors),
    ];
}

最后,這是控制器

    protected $user;

public function __construct(Doctors $doctors){
    $this->doctors = $doctors;
}

public function index()
{
    $doctors = $this->doctors->with('specializations', 'subSpecializations')->get();
    return DoctorsResource::collection($doctors);
}

我期待的結果與此類似

{ 
"data":[ 
    { 
        "first_name":"Rusty",
        "last_name":"Ferry",
        "specializations":{ 
            "specialization_id":11,
            "specialization_name":"Endocrinology"
        },
        "sub_specializations": {
            "sub_specialization_name":"value"
       }
    }
  ]
}

您必須確保有特定醫生的子專業數據。

如果有數據,則將該數據添加到 Doctor Resource 中,否則它將為空白。

只需要更改醫生資源中的行,例如:

'sub_specializations' => $this->sub_specializations !== null ? new SubSpecializationsResource($this->sub_specializations) : '',

你也可以用專業做同樣的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM