Php 拉维Api资源

Php 拉维Api资源,php,laravel,api,laravel-5.8,laravel-resource,Php,Laravel,Api,Laravel 5.8,Laravel Resource,我正在尝试使用Laravel的资源为我的数据表创建一个API。我有三个关系模型。每次我点击api路由检查结果时,我的sub_专门化中都会得到一个空值。这是已经JSON格式的结果 { "data":[ { "first_name":"Rusty", "last_name":"Ferry", "specializations":{ "specialization_id":11, "

我正在尝试使用Laravel的资源为我的数据表创建一个API。我有三个关系模型。每次我点击api路由检查结果时,我的sub_专门化中都会得到一个空值。这是已经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"
       }
    }
  ]
}

您必须确保有特定医生的子专科数据

如果有数据,则将该数据添加到医生资源中,否则该数据将为空

只需更改医生资源中的行,如:

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

你也可以对专业做同样的事情。

你必须确保有特定医生的子专业数据

如果有数据,则将该数据添加到医生资源中,否则该数据将为空

只需更改医生资源中的行,如:

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

你也可以对专业化做同样的事情。

谢谢兄弟,顺便说一句,很抱歉回复晚了。这帮我解决了我的问题Ethank's bro顺便说一句,很抱歉回复太晚。这帮我解决了我的问题