Este tipo de consulta, con uso de paréntesis en las condiciones del Where se puede hacer con una closure o función anónima. Seguramente ya las hayas usado en Laravel en otros ejempos de Eloquent.
Simplemente es un where en el que, en vez de dar una condición, pasas por parámetro la función anónima. Lo puedes ver bien en el siguiente código:
Model::where('stock', '>', 0)->where( function($query) {
$query->where('price', '<', $quantity)->orWhere('promotion', '=', true);
})->get();
Como puedes comprobar, Eloquent toma la función anónima como si fueran paréntesis y evalúa la consulta que hay dentro, tomando el resultado de la función anónima para evaluar la consulta generál.