我有三张牌桌:realties
,room_types
和realty_room_type
:
realty_room_type
----------------
id
realty_id
room_type_id
room_type
----------------
id
code
在我的Realty
模型中,我设置了rooms()
关系:
public function rooms()
{
return $this->hasMany(Room::class);
}
我正在尝试使用rooms()
方法急切加载with()
关系。我想自定义从关系返回的内容,所以我传递了一个这样的回调函数:
$realty = Realty::
where('id', $realtyId)
->with([
'rooms' => function ($query) use ($realtyId) {
$query
->leftJoin('room_types', 'room_types.id', '=', 'realty_room_type.room_type_id')
->selectRaw('code, COUNT(*)')
->groupBy('code');
}
])
->get()
);
问题是我在使用$realty->rooms
访问关系时获得了一个空集合。知道为什么吗?
但是,如果我像这样转储并死掉回调函数的语句:
Realty::
where('id', $realtyId)
->with([
'rooms' => function ($query) use ($realtyId) {
dd($query
->leftJoin('room_types', 'room_types.id', '=', 'realty_room_type.room_type_id')
->selectRaw('code, COUNT(*)')
->groupBy('code'));
}
])
->get()
);
我得到了rooms()
关系中我想要的内容。
提前谢谢。
答案 0 :(得分:0)
您无需return
callback
内get()
功能并致电$realty = Realty::
where('id', $realtyId)
->with([
'rooms' => function ($query) use ($realtyId) {
$query
->leftJoin('room_types', 'room_types.id', '=', 'realty_room_type.room_type_id')
->selectRaw('code, COUNT(*)')
->groupBy('code');
}
])
->get();
。 Here您可以找到详细信息。
created_event = service.events().update(calendarId=calendar_id,sendNotifications=True, eventId=event_id, body=modified_event).execute()