DB::table() — the Query Builder entry point
Concept
The Query Builder (Illuminate\Database\Query\Builder) is Laravel's fluent SQL interface below Eloquent. It works with any table without needing a model, returns stdClass objects (not Eloquent models), and fires no model events.
Entry points:
DB::table('users'): Returns aBuilderfor theuserstable.DB::table('users', 'u'): With aliasu.DB::connection('secondary')->table('orders'): On a specific connection.Eloquent::getQuery(): Gets the underlying Query Builder from an Eloquent Builder.
What the Query Builder is NOT: It's not Eloquent. No $fillable, no casts, no relationships, no model events, no toArray() on models. Results are plain stdClass objects or arrays.
get(): Execute and return Illuminate\Support\Collection of stdClass.
first(): Execute with LIMIT 1, return stdClass|null.
find(int $id): Shorthand for ->where('id', $id)->first().
value(string $column): Get a single column value from the first result: DB::table('settings')->where('key', 'version')->value('value').
pluck(string $column): Get all values of a column as a Collection: DB::table('users')->pluck('email').
toSql(): Get the SQL string without executing.
dd() / dump(): Dump the SQL and bindings for debugging.
Code Example
<?php
use Illuminate\Support\Facades\DB;
// Basic table entry
$users = DB::table('users')->get(); // Collection of stdClass
// Access results
foreach ($users as $user) {
echo $user->name; // stdClass property
echo $user->email;
}
// find() — by primary key
$user = DB::table('users')->find(1); // stdClass|null
// first() — first matching row
$admin = DB::table('users')->where('role', 'admin')->first();
// value() — single scalar value
$version = DB::table('settings')
->where('key', 'app_version')
->value('value'); // 'v2.1.0'
// pluck() — all values of one column
$emails = DB::table('users')->pluck('email'); // ['alice@...', 'bob@...']
$nameById = DB::table('users')->pluck('name', 'id'); // [1 => 'Alice', 2 => 'Bob']
// exists() / doesntExist()
$exists = DB::table('users')->where('email', 'alice@example.com')->exists();
// count(), max(), min(), avg(), sum()
$count = DB::table('users')->where('active', true)->count();
$maxAge = DB::table('users')->max('age');
$revenue = DB::table('orders')->where('status', 'completed')->sum('total');
// Debug — see the SQL
DB::table('users')->where('active', true)->toSql();
// "select * from `users` where `active` = ?"
DB::table('users')->where('active', true)->dd(); // die and dump SQL+bindings
DB::table('users')->where('active', true)->dump(); // dump without dying
// Named connection
DB::connection('analytics')->table('events')->where('date', today())->count();