users
表pets
表belongsToMany
。user_pets
的数据透视表,其中包含有关用户的特定宠物的信息。我使用$user->pets()
获取用户宠物,包括数据透视表信息。我的用户模型中的pets()
方法是:
public function pets()
{
$pets = $this->belongsToMany(Pet::Class, 'user_pets')->withPivot(
'id',
'position',
'level',
'exp'
)->orderBy('position','asc');
return $pets;
}
如您所见,每个宠物都有level
和exp
个字段。获得下一级所需的exp列在我的pet_exp
表中:
ID | level | requiredExp
1 5 237
2 6 406
3 7 637
4 8 942
5 9 1326
6 10 1800
7 11 2369
$user->pets()
(上述方法)返回宠物当前级别的requiredExp。我已经思考了几个小时,无法想办法如何做到这一点。 希望你能帮助我,谢谢!
答案 0 :(得分:1)
我将如何做到这一点:
在Pet
模型中添加requiredexp
功能:
function requiredexp() {
return DB::table('pet_exp')->where('level', $this->level)->value('requiredExp');
}
这应该返回您调用该函数的宠物等级的requiredExp(即$pet->requiredexp
)
编辑:
您也可以将其作为属性:
function getRequiredexpAttribute($value) {
return DB::table('pet_exp')->where('level', $this->level)->value('requiredExp');
}