我的模型Items
与Rooms
相关,Buildings
与Locations
相关,与Items
相关。
简短:Rooms
belongsTo Buildings
belongsTo Locations
belongsTo ItemController
在Items
的索引函数处,我想显示Room
的表格。我使用Laravel Datatables。它适用于简单的'表,但我遇到了排序/搜索自定义/附加字段的问题,因为它们当然不在表中。
基本上我想加入显示表中每个Building
的{{1}},Location
和Item
名称。
这是我的Items
模型:
protected $appends = [
'building_title',
'location_title',
'room_title',
];
public function getLocationTitleAttribute() {
return $this->room->building->location->title;
}
public function getBuildingTitleAttribute() {
return $this->room->building->title;
}
public function getRoomTitleAttribute() {
return $this->room->title;
}
这是我的控制器:
public function anyData()
{
return Datatables::of(Item::query())->make(true);
}
为附加字段启用排序/过滤的最佳方法是什么? 谢谢你的阅读。
答案 0 :(得分:0)
这是我的解决方案(没有使用附加字段):
public function anyData()
{
$items = Item::join('rooms', 'items.room_id', '=', 'rooms.id')
->join('buildings', 'rooms.building_id', '=', 'buildings.id')
->join('locations', 'buildings.location_id', '=', 'locations.id')
->select([
'items.id',
'items.title',
'items.label_number',
'items.fibu_number',
'rooms.title as room_title',
'buildings.title as building_title',
'locations.title as location_title'
]);
return Datatables::of($items)->make(true);
}