我试图从数据库中获取记录,其中玩家在游戏中扮演玩家1或2,以计算玩家在个人资料中的毛利。我有以下高级雄辩代码:
$user = User::with('profile')->where('name', $username)->first();
$user_id = $user->id;
$games_model = Games::where(function ($q) {
global $user_id;
$q->where('player1', '=', $user_id)->orWhere('player2', '=', $user_id);
});
$games = $games_model->limit(3)->get();
// get gross profits
$gross_profits = $games_model->sum('bet');
dd($games_model->get()->toArray());
但是当我试着看一下倾倒的结果时,我看到一个空白数组。我确信我的用户ID已正确设置。有趣的是它只返回一个结果而不是数据库中的所有结果。我糊涂了。我在这里先向您的帮助表示感谢!
答案 0 :(得分:0)
这样的事情应该有效,假设遵循数据库和命名约定。
用户::类
public function games()
{
return $this->hasMany(Games::class);
}
查询:
Users::where('name', $username)
->has('games')
->with('profile')
->limit(3)
->get();
尚未测试,但这应该给你一个想法。
答案 1 :(得分:0)
这是解决方案。
global
每次都根据变量范围进行工作。我改变了
$games_model = Games::where(function ($q) {
global $user_id;
$q->where('player1', '=', $user_id)->orWhere('player2', '=', $user_id);
});
到
$user_id = $user->id;
$games_model = Games::where(function ($q) use ($user_id) {
$q->where('player1', '=', $user_id)->orWhere('player2', '=', $user_id);
});
每次都很完美。