我似乎无法弄清楚这一点。
我有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。
答案 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;我可以想出:)