Concept Flow - Raw expressions
Start Query Builder
Add Raw Expression
Raw SQL Injected
Execute Query
Get Results
This flow shows how Laravel's query builder accepts raw SQL expressions, injects them directly, and executes the query.
$users = DB::table('users') ->select(DB::raw('count(*) as user_count')) ->whereRaw('age > ?', [25]) ->get();
| Step | Action | Raw Expression Used | Query Part | Result |
|---|---|---|---|---|
| 1 | Start query builder on 'users' table | N/A | FROM users | Query builder ready |
| 2 | Add select with DB::raw('count(*) as user_count') | count(*) as user_count | SELECT count(*) as user_count | Select clause set |
| 3 | Add whereRaw('age > ?', [25]) | age > ? | WHERE age > 25 | Where clause set with parameter |
| 4 | Execute get() | N/A | Full SQL: SELECT count(*) as user_count FROM users WHERE age > 25 | Query executed, results fetched |
| 5 | Return results | N/A | N/A | Collection of results with user_count |
| Variable | Start | After Step 2 | After Step 3 | After Step 4 | Final |
|---|---|---|---|---|---|
| $users | undefined | Query builder instance with select raw | Query builder instance with whereRaw added | Executed query, results fetched | Collection with user_count |
Laravel Raw Expressions: - Use DB::raw() to insert raw SQL in queries. - Use whereRaw() for raw WHERE clauses with bindings. - Bind parameters to avoid SQL injection. - Raw expressions bypass Laravel's query builder escaping. - Useful for complex SQL not supported by builder methods.