【发布时间】:2019-07-15 13:37:35
【问题描述】:
以前我使用如下查询获取数据
$specialitiesAndRoles = DB::table('user_facility')
->leftjoin('roles', 'user_facility.role_id', 'roles.id')
->leftjoin('specialities','user_facility.speciality_id','=','specialities.id')
->leftjoin('available_specialties','specialities.available_specialties_id' ,'=','available_specialties.id')
->where('user_facility.user_id', $user_id)
->select('user_facility.facility_id','user_facility.speciality_id','user_facility.is_facility_supervisor','user_facility.priv_key','user_facility.role_id','specialities.name','available_specialties.id','available_specialties.specialty_key')
->get();
$specialities = (object)$specialitiesAndRoles;
$response = ['facilities' => $specialities];
我的回答是:
"facilities": [
{
"facility_id": 59,
"speciality_id": 1,
"is_facility_supervisor": 0,
"priv_key": "can_access_patient",
"role_id": 2,
"name": "Medical",
"id": 1,
"specialty_key": "medical_doctor"
现在我正在使用关系并试图获得相同的响应:
我的关系代码:
$specialitiesAndRoles = UserFacility::with([
'speciality' => function($q)
{
$q->select('id','speciality_key');
},
'roles' => function($q)
{
$q->select('id','name');
},
'availableSpeciality' => function($q)
{
$q->select('id','specialty_key');
}])->get();
我使用关系的响应变成了下面的每个对象
"facilities": [
{
"id": 2,
"user_id": 32,
"facility_id": 59,
"speciality_id": 1,
"is_facility_supervisor": 0,
"priv_key": "can_access_patient",
"role_id": 2,
"is_admin": null,
"created_at": "2019-07-15 11:30:13",
"updated_at": "2019-07-15 11:30:13",
"isDeleted": null,
"created_by": null,
"updated_by": null,
"is_primary": 0,
"speciality": {
"id": 1,
"speciality_key": "medical_doctor"
},
"roles": {
"id": 2,
"name": "Admin"
},
"available_speciality": {
"id": 2,
"specialty_key": "accu"
},
我不想在来自不同表的每个数据上创建对象,我只想做出与我使用查询和上面共享的相同的响应。
如何使用关系做出此响应? 您的帮助将不胜感激 提前致谢。
【问题讨论】:
标签: php laravel object relationship