Laravel - 向关系输出添加信息

时间:2016-04-25 13:48:19

标签: laravel

  • 我有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;
    }
    
  • 如您所见,每个宠物都有levelexp个字段。获得下一级所需的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。我已经思考了几个小时,无法想办法如何做到这一点。

希望你能帮助我,谢谢!

1 个答案:

答案 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');
}