Laravel Eloquent ORM条件关系

时间:2014-04-06 12:41:56

标签: php laravel eloquent

我似乎无法弄清楚这一点。

我有3个表:用户,经验,等级 (简化的)

User: {id, string:name}
Experience: {id, user_id, int:amount}
Level: {id, string:level, int:experience}

//User class
public function experiences(){
    return $this->hasMany('Experience', 'user_id');
}

经验和等级之间没有数据库关系。

我如何获得关卡,如下所示:

public function level(){
    return $this->experiences()->has('Level.experience', '<', $this->experiences()->sum('amount'))->first();
}

我知道如何把它写成一个连接,但我宁愿让Eloquent为我做。

示例数据:

User: {1, 'userOne'}
Experience: {1, 1, 10}
Level: {1, 'LevelOne', 5}

此用户将具有级别“LevelOne” - 因为经验总和为10,并且Level_id 1以上且经验最少为5。

1 个答案:

答案 0 :(得分:0)

所以我已经做了,解决这个问题。

我的用户模型:

    public static function getLevel($experience){
    $level = Level::where('experience', '<=', $experience)->first();
    return $level;
    }

观点:

{{Auth::user()->getLevel(Auth::user()->experiences->sum('amount'))->level}}

这是最好的&#39; hack&#39;我可以想出:)