1. Selects
Retrieve all rows in the table
1 2 3 4 5 | $users = DB::table('users')->get();
foreach ( $users as $user )
{
var_dump( $user ->name);
}
|
Copy after login
Retrieve a single row from the table
1 2 | $user = DB::table('users')->where('name', 'John')->first();
var_dump( $user ->name);
|
Copy after login
Retrieve rows of a single column
1 | $name = DB::table('users')->where('name', 'John')->pluck('name');
|
Copy after login
Retrieve A list of column values
1 | $roles = DB::table('roles')->lists('title');
|
Copy after login
This method will return an array header. You can also specify a custom key column to return the array
1 | $roles = DB::table('roles')->lists('title', 'name');
|
Copy after login
Specify a Select clause
1 2 3 | $users = DB::table('users')->select('name', 'email')->get();
$users = DB::table('users')->distinct()->get();
$users = DB::table('users')->select('name as user_name')->get();
|
Copy after login
Select clause to add to an existing query $query = DB::table( 'users')->select('name');
1 | $users = $query ->addSelect('age')->get();
|
Copy after login
where
1 | $users = DB::table('users')->where('votes', '>', 100)->get();
|
Copy after login
OR
1 | $users = DB::table('users')->where('votes', '>', 100)->orWhere('name', 'John')->get();
|
Copy after login
Where Between
1 | $users = DB::table('users')->whereBetween('votes', array (1, 100))->get();
|
Copy after login
Where Not Between
1 | $users = DB::table('users')->whereNotBetween('votes', array (1, 100))->get();
|
Copy after login
Where In With An Array
1 2 | $users = DB::table('users')->whereIn('id', array (1, 2, 3))->get();
$users = DB::table('users')->whereNotIn('id', array (1, 2, 3))->get();
|
Copy after login
Using Where Null To Find Records With Unset Values
1 | $users = DB::table('users')->whereNull('updated_at')->get();
|
Copy after login
Order By, Group By, And Having
1 | $users = DB::table('users')->orderBy('name', 'desc')->groupBy(' count ')->having(' count ', '>', 100)->get();
|
Copy after login
Offset & Limit
1 | $users = DB::table('users')->skip(10)->take(5)->get();
|
Copy after login
2. Connection
Joins
The query builder can also be used to write connection statements. Take a look at the following example:
Basic Join Statement
1 2 3 4 5 | DB::table('users')
->join('contacts', 'users.id', '=', 'contacts.user_id')
->join('orders', 'users.id', '=', 'orders.user_id')
->select('users.id', 'contacts.phone', 'orders.price')
->get();
|
Copy after login
Left Join Statement
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | DB::table('users')
->leftJoin('posts', 'users.id', '=', 'posts.user_id')
->get();
DB::table('users')
->join('contacts', function ( $join )
{
$join ->on('users.id', '=', 'contacts.user_id')->orOn(...);
})
->get();
DB::table('users')
->join('contacts', function ( $join )
{
$join ->on('users.id', '=', 'contacts.user_id')
->where('contacts.user_id', '>', 5);
})
->get();
|
Copy after login
3. Grouping
Sometimes, you may need to create more advanced Where clauses such as "exists" or nested parameter groupings. Laravel query builder can handle these:
1 2 3 4 5 6 7 8 | DB::table('users')
->where('name', '=', 'John')
->orWhere( function ( $query )
{
$query ->where('votes', '>', 100)
->where('title', '<>', 'Admin');
})
->get();
|
Copy after login
The above query will generate the following SQL:
1 2 3 4 5 6 7 8 9 10 11 | select * from users where name = 'John' or (votes > 100 and title
<> 'Admin')
Exists Statements
DB::table('users')
->whereExists( function ( $query )
{
$query ->select(DB::raw(1))
->from('orders')
->whereRaw('orders.user_id = users.id');
})
->get();
|
Copy after login
The above query will generate the following SQL:
1 2 3 | select * from userswhere exists (
select 1 from orders where orders.user_id = users.id
)
|
Copy after login
4. Aggregation
The query builder also provides various aggregation methods such as statistics, max, min, avg and sum.
Using Aggregate Methods
1 2 3 4 5 | $users = DB::table('users')-> count ();
$price = DB::table('orders')->max('price');
$price = DB::table('orders')->min('price');
$price = DB::table('orders')->avg('price');
$total = DB::table('users')->sum('votes');
|
Copy after login
Raw Expressions
Sometimes you may need to use a raw expression query. These expressions will be injected into the query string, so be careful not to create any SQL injection points! To create a raw expression, you can use DB:rawmethod:
Using A Raw Expression
1 2 3 4 5 | $users = DB::table('users')
->select(DB::raw(' count (*) as user_count, status'))
->where('status', '<>', 1)
->groupBy('status')
->get();
|
Copy after login
increment or Decrement the value of a column
1 2 3 4 | DB::table('users')->increment('votes');
DB::table('users')->increment('votes', 5);
DB::table('users')->decrement('votes');
DB::table('users')->decrement('votes', 5);
|
Copy after login
You can also specify additional column updates:
1 | DB::table('users')->increment('votes', 1, array ('name' => 'John'));
|
Copy after login
Inserts
Insert records into table
1 2 3 | DB::table('users')->insert(
array ('email' => 'john@example.com', 'votes' => 0)
);
|
Copy after login
Insert records into table Auto-increment ID
If the table, has an auto-increment id field use insertGetId to insert a record and retrieve the id:
1 2 3 | $id = DB::table('users')->insertGetId(
array ('email' => 'john@example.com', 'votes' => 0)
);
|
Copy after login
Note: When using the PostgreSQL insertGetId method it is expected that the auto-increment column will be named is "id".
Insert multiple records into the table
1 2 3 4 | DB::table('users')->insert( array (
array ('email' => 'taylor@example.com', 'votes' => 0),
array ('email' => 'dayle@example.com', 'votes' => 0),
));
|
Copy after login
4. Updates
Update records in a table
1 2 3 | DB::table('users')
->where('id', 1)
->update( array ('votes' => 1));
|
Copy after login
5. Deletes
Delete records in the table
1 | DB::table('users')->where('votes', '<', 100)-> delete ();
|
Copy after login
Delete all records in the table
1 | DB::table('users')-> delete ();
|
Copy after login
Delete a table
1 | DB::table('users')->truncate();
|
Copy after login
6. Unions
The query builder also provides A quick way to "union" two queries:
1 2 3 | $first = DB::table('users')->whereNull('first_name');
$users =
DB::table('users')->whereNull('last_name')->union( $first )->get();
|
Copy after login
The unionAll method is also available and has the same method signature.
Pessimistic Locking
The query builder includes some "pessimistic locking" features to help you with your SELECT statements. To run the SELECT statement "shared lock", you can use the sharedLock method to query:
1 2 | DB::table('users')->where('votes', '>',
100)->sharedLock()->get();
|
Copy after login
To update "lock" in a SELECT statement, you can use the lockForUpdate method to query:
1 | DB::table('users')->where('votes', '>', 100)->lockForUpdate()->get();
|
Copy after login
7. Cache query
You can easily cache the results of a query using mnemonics:
1 | $users = DB::table('users')->remember(10)->get();
|
Copy after login
In this example, the results of the query will be cached for ten minutes. When query results are cached, they are not run against the database and the results will be loaded from the default cache driver specified by your application. If you are using a driver that supports caching, you can also add tags to cache:
1 | $users = DB::table('users')->cacheTags( array ('people', 'authors'))->remember(10)->get();
|
Copy after login
For more articles on Laravel framework database CURD operations and coherent operation summary, please pay attention to the PHP Chinese website!