Laravel查询构建器 - OrWhere + Where

时间:2016-05-26 16:56:01

标签: laravel

我有以下查询:

public function getPvpBattle()
    {
        $battle = PvpBattle::where('player1_id','=',$this->id)
        ->orWhere('player2_id', '=', $this->id)
        ->where('mode','!=','FINISH')
        ->first();
        if ($battle) return $battle;
        else
            return false;
    }

由于某些原因,它在每个用户上都不起作用,并且会返回player1_idplayer2_id的不同行,这些行应该在同一场战斗中。

此查询中出现了什么问题以及我如何使player1_idplayer2_id属于同一行的相同结果的工作和重新计算?

1 个答案:

答案 0 :(得分:2)

如何使用此查询?

$id = $this->id;

$battle = PvpBattle::where('mode', '!=', 'FINISH')
    ->where(function ($query) use ($id) {
        $query->where('player1_id', '=' , $id)
            ->orWhere('player2_id', '=', $id);
    })
    ->first();

详细了解提前查询here