Проблема с hasManyThrough в Laravel

Может быть, повторить, но мой поиск не увенчался успехом. Что мы имеем:
Laravel 5.2, три стола

user_tariff_hours_history

  • Я бы
  • user_tariff_id

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 параметров, чем я пытался использовать различные комбинации параметров.

1

Решение

определять 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();
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]