也许有点傻,但我的搜索没有成功。我们有:Laravel 5.2,三张桌子
user_tariff_hours_history
user_tariff
用户
我想通过当前用户\u费率\u小时\u历史记录的用户\u费率获取用户
正如官方的Laravel文档所说,我需要在我的用户历史模型中使用hasManyThrough方法的getterhttps://laravel.com/docs/5.5/eloquent-relationships#has-许多通过
但使用该getter的查询结果出乎意料。
我得到的是整个用户表,而不是当前用户\u关税\u小时\u历史记录的用户
吸气剂:
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)
}
注意:在文档中,hasManyThrough有6个参数,但是Laravel说它只有5个参数,而我尝试使用的是diffirent参数组合
在用户模型中定义一个名为userTariffHours历史的关系,并使用其中有():
User::whereHas('userTariffHoursHistory', function($q) use($userTariffHoursHistoryId) {
$q->where('id', $userTariffHoursHistoryId);
})->first();
或者定义两个关系(在UserTariff模型和UserTariff模型中的userTariff和userTariffHours历史),然后使用嵌套的代码。
User::whereHas('userTariffs', function($q) use($userTariffHoursHistoryId) {
$q->whereHas('userTariffHoursHistory', function($q) use($userTariffHoursHistoryId) {
$q->where('id', $userTariffHoursHistoryId);
});
})->first();