Laravel Query Builder: Where Clauses

Simple Where Clauses

$users = DB::table('users')->where('votes', '=', 100)->get();
$users = DB::table('users')->where('votes', 100)->get();
$users = DB::table('users')
                ->where('votes', '>=', 100)
                ->get();

$users = DB::table('users')
                ->where('votes', '<>', 100)
                ->get();

$users = DB::table('users')
                ->where('name', 'like', 'T%')
                ->get();

Or Statements

$users = DB::table('users')
                    ->where('votes', '>', 100)
                    ->orWhere('name', 'John')
                    ->get();

Additional Where Clauses

Parameter Grouping

DB::table('users')
            ->where('name', '=', 'John')
            ->where(function ($query) {
                $query->where('votes', '>', 100)
                      ->orWhere('title', '=', 'Admin');
            })
            ->get();
Select * from users where name = 'John' and (votes > 100 or title = 'Admin')

Where Exists Clauses

DB::table('users')
            ->whereExists(function ($query) {
                $query->select(DB::raw(1))
                      ->from('orders')
                      ->whereRaw('orders.user_id = users.id');
            })
            ->get();
Select * from users
where exists (
    select 1 from orders where orders.user_id = users.id
)

JSON Where Clauses

$users = DB::table('users')
                ->where('options->language', 'en')
                ->get();

$users = DB::table('users')
                ->where('preferences->dining->meal', 'salad')
                ->get();
$users = DB::table('users')
                ->whereJsonContains('options->languages', 'en')
                ->get();
$users = DB::table('users')
                ->whereJsonContains('options->languages', ['en', 'de'])
                ->get();
$users = DB::table('users')
                ->whereJsonLength('options->languages', 0)
                ->get();

$users = DB::table('users')
                ->whereJsonLength('options->languages', '>', 1)
                ->get();

Laravel Query Builder: Where Clauses — Structure map

Clickable & Draggable!

Laravel Query Builder: Where Clauses — Related pages: