Laravel Eloquent связь нескольких таблиц
Помогите победить отношения в ларавель.
Есть 4 таблицы.
- Оборудование
- Адреса
- Связь 1 и 2
- Заявки на ремонт 1
Связи все понятны. 1 и 2 - многие ко многим. 1 и 4 - один ко многим. Нужно получить заявки на ремонт по адресам, отношение - ко многим через. Как релизовать - не понимаю.
Модель 1:
class Terminal extends Model
{
public $primaryKey = 'Terminal';
// Чтобы получить где находится оборудование
public function place()
{
return $this->belongsToMany(Place::class, 'TerminalPlaces', 'Terminal', 'Place_Id');
}
//Чтобы получить заявки на ремонт оборудования
public function appeal()
{
return $this->hasMany(Appeal::class,'Terminal')->whereRepaired(0);
}
}
Модель 2:
class Place extends Model
{
public $primaryKey = 'Place_Id';
//Чтобы узнать все оборудование, которое находится по этому адресу
public function terminal()
{
return $this->belongsToMany(Terminal::class, 'TerminalPlaces', 'Place_Id', 'Terminal')->withPivot('Terminal_Order');
}
}
Как сделать на join-ах - ваще нет проблем, а на eloquent-е - не пойму куда запихать связь ко многим через, чтоб из контроллера можно было обращаться
public function show($id)
{
return = Place::find($id)->appeal()->get();
}
p.s. Еще меленький вопрос, когда делаю запрос Place::find($id)->terminal()->get(); то получаю результат с объектом pivot в котором есть определенные поля, как их перенести в основной объект? чтобы вместо
{
"Terminal": 100,
"TerminalType_Id": "1",
"Board": "Asus",
"pivot": {
"Place_Id": "1",
"Terminal": "100",
"Terminal_X": "1",
"Terminal_Y": "1",
"Terminal_Angle": "0",
}
},
было
{
"Terminal": 100,
"TerminalType_Id": "1",
"Board": "Asus",
"Place_Id": "1",
"Terminal_X": "1",
"Terminal_Y": "1",
"Terminal_Angle": "0",
},