Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

JhonD's avatar
Level 1

it is possible to write something like that ?

$date = '2021-05-01';
$users = User::
             select( [
                 DB::raw('(SELECT COUNT(*) FROM bookings WHERE bookings.user_id = users.id 
					if($date != null){
					WHERE bookings.date = $date
					}
				) as count')
             ] );
0 likes
2 replies
Sergiu17's avatar

You could construct sql outside the raw function, something like this

$sql = '(SELECT COUNT(*) FROM bookings WHERE bookings.user_id = users.id ';
if($date != null){
	$sql .= "WHERE bookings.date = $date";
}

but with proper relationships between User and Booking Models you could end up with a clenear code

Snapey's avatar

use eloquent?

$bookings = User::bookings()->whereDate('date', $date)->count();

Please or to participate in this conversation.