Laravel-向关系输出添加信息 我有用户表 我有pets表 它们之间的关系属于同态 这些表具有名为user\u pets的数据透视表,其中包含有关用户特定宠物的信息
我使用Laravel-向关系输出添加信息 我有用户表 我有pets表 它们之间的关系属于同态 这些表具有名为user\u pets的数据透视表,其中包含有关用户特定宠物的信息,laravel,Laravel,我使用$user->pets()获取用户pets,包括透视表信息。我的用户模型中的pets()方法是: public function pets() { $pets = $this->belongsToMany(Pet::Class, 'user_pets')->withPivot( 'id', 'position', 'level', 'exp' )->orderBy('position','asc'); return $
$user->pets()
获取用户pets,包括透视表信息。我的用户模型中的pets()
方法是:
public function pets()
{
$pets = $this->belongsToMany(Pet::Class, 'user_pets')->withPivot(
'id',
'position',
'level',
'exp'
)->orderBy('position','asc');
return $pets;
}
等级
和exp
字段。我的pet\u exp
表中列出了获得下一级别所需的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()
(上面的方法)返回宠物当前等级所需的经验值。我已经想了几个小时,想不出一个方法来做这件事李>
希望你能帮助我,谢谢 我会这样做: 在您的
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');
}
例如,如果宠物级别为
5
,您是否要求返回237
,或者您是否希望返回406
,因为这比宠物级别高一级?我要求返回237。是否可以将属性添加到pet
模型?还是必须将其放入返回的pets()
数组中?如果我这样做,我可能会在Pets
模型中添加一个requiredxp()
函数,该函数将返回$this->level
所需的exp。是的,只要我不需要添加新的数据库字段,它就会被接受。我面临的主要问题是使用$user->Pets()
为所有宠物设置默认值。这意味着,当检索用户宠物时,每个宠物都会自动计算该值。我需要在我的关系输出中有这个值。我不完全确定我理解你的要求,但我认为你可以用属性做你想要的。我将把它编辑到我的答案中。我的意思是,我在问答中发布的方法,pets()
,将为每只宠物输出宠物所需的经验。我一直在尝试使用foreach
,但运气不好。