Eloquent Left加入多个条件

时间:2017-05-11 16:31:51

标签: eloquent

我需要安装一个具有多个条件的左连接,但我没有找到正确的设置

LEFT JOIN palpite ON partida.partida_id = palpite.partida_fk AND palpite.usuario_fk = 20
雄辩的代码

$results = DB::table('partida')
        ->join('time as mandante', 'mandante.time_id', '=', 'partida.mandante_fk')
        ->join('time as visitante', 'visitante.time_id', '=', 'partida.visitante_fk')
        ->leftJoin('palpite', function ($join) {
            $join->on('partida.partida_id', '=', 'palpite.partida_fk')
                ->on('partida.usuario_fk', '=', '20');
        })
        ->select([
            'partida.partida_id',
            'partida.rodada',
            'partida_data',
            'partida.local',
            'partida.mandante_fk',
            'partida.visitante_fk',
            'mandante.abreviacao AS mandante_abreviacao',
            'mandante.nome AS mandante_nome',
            'mandante.escudo60x60 AS mandante_escudo',
            'visitante.abreviacao AS visitante_abreviacao',
            'visitante.nome AS visitante_nome',
            'visitante.escudo60x60 AS visitante_escudo',
            'palpite.placar_mandante',
            'palpite.placar_visitante'
        ])
        ->where('mandante.aposta', 1)
        ->orWhere('visitante.aposta', 1)
        ->orderBy('partida.partida_data', 'ASC')
        ->get();

1 个答案:

答案 0 :(得分:0)

试试这个:

 $results = DB::table('partida')
            ->join('time as mandante', 'mandante.time_id', '=', 'partida.mandante_fk')
            ->join('time as visitante', 'visitante.time_id', '=', 'partida.visitante_fk')
            ->leftJoin('palpite', function ($join) {
                $join->on('partida.partida_id', '=', 'palpite.partida_fk');
                $join->on('partida.usuario_fk', '=', '20');
            })
            ->select([
                'partida.partida_id',
                'partida.rodada',
                'partida_data',
                'partida.local',
                'partida.mandante_fk',
                'partida.visitante_fk',
                'mandante.abreviacao AS mandante_abreviacao',
                'mandante.nome AS mandante_nome',
                'mandante.escudo60x60 AS mandante_escudo',
                'visitante.abreviacao AS visitante_abreviacao',
                'visitante.nome AS visitante_nome',
                'visitante.escudo60x60 AS visitante_escudo',
                'palpite.placar_mandante',
                'palpite.placar_visitante'
            ])
            ->where('mandante.aposta', 1)
            ->orWhere('visitante.aposta', 1)
            ->orderBy('partida.partida_data', 'ASC')
            ->get();