Может быть, повторить, но мой поиск не увенчался успехом. Что мы имеем:
Laravel 5.2, три стола
user_tariff_hours_history
user_tariff
пользователи
я хочу получить пользователь через user_tariff для текущего user_tariff_hours_history
Как сказал официальный Laravel Docs, мне нужно иметь метод get с методом hasManyThrough в модели моей user_tariff_hours_history https://laravel.com/docs/5.5/eloquent-relationships#has-many-through
Но результат запроса с этим получателем не ожидался.
Я получаю целым пользователи таблица, а не пользователь для текущего user_tariff_hours_history
геттер:
public function getUsers() {
return $this->hasManyThrough('App\SARegistration',
'App\SAUser_tariff',
'user_id', //FK on SARegistration (users)
'id', //Local Key of ?
'user_tariff_id'); //FK on SAUser_tariff (user_tariffs)
}
Примечание: в документах есть 6 параметров для hasManyThrough, но Ларавел сказал, что у него всего 5 параметров, чем я пытался использовать различные комбинации параметров.
определять hasManyThrough
отношения называются userTariffHoursHistory
в User
модель и использование whereHas()
:
User::whereHas('userTariffHoursHistory', function($q) use($userTariffHoursHistoryId) {
$q->where('id', $userTariffHoursHistoryId);
})->first();
Или определить два hasMany()
отношения (userTariffs
в User
модель и userTariffHoursHistory
в UserTariff
модель), а затем использовать вложенный whereHas()
:
User::whereHas('userTariffs', function($q) use($userTariffHoursHistoryId) {
$q->whereHas('userTariffHoursHistory', function($q) use($userTariffHoursHistoryId) {
$q->where('id', $userTariffHoursHistoryId);
});
})->first();
Других решений пока нет …