Mysql
 sql >> Base de données >  >> RDS >> Mysql

Différents résultats utilisant la même requête avec DB ::raw et Eloquent

where lie le 3ème paramètre et le traite généralement comme une chaîne, sauf si vous lui dites de ne pas le faire en utilisant une instruction brute. DB::raw ou whereRaw travaillera pour vous :

return User::join('squad_user', 'users.id', '=', 'squad_user.user_id')
       ->join('seasons', 'squad_user.squad_id', '=', 'seasons.squad_id')
       ->where('squad_user.join_time', '<=', DB::raw('seasons.end_time'))
       ->where(function ($query)
       {
           $query->where('squad_user.leave_time', '>=', DB::raw('seasons.start_time'))
                 ->orWhereNull('squad_user.leave_time');
       })
       ->where('seasons.id', 3)
       ->get(['users.*']);