Home> php教程> PHP开发> body text

Summary of PHP development framework Laravel database operation methods

高洛峰
Release: 2016-12-27 10:27:21
Original
1330 people have browsed it

1. Read/Write Connections

Sometimes you may want to use one database connection for SELECT statements, and another for insert, update, and delete statements. Laravel makes this a breeze and will always use the correct connection whether using raw queries, the query builder or the Eloquent ORM.

How the read/write connection should be configured, let's look at this example:

'mysql' => array('read' => array('host' => '192.168.1.1'),'write' => array('host' => '196.168.1.2'),'driver' => 'mysql','database' =>'database','username' => 'root','password' => '','charset' => 'utf8','collation' => 'utf8_unicode_ci','prefix' => '')
Copy after login

Note that two keys are added to the configuration array: read and write. Both keys have array values containing one key: host. The rest of the read and write database options from the main mysql connection will be the merged array. So, we just need to put items into the read and write arrays if we wish to overwrite the values in the main array. So, in this case, 192.168.1.1 will be used as a "read" connection, while 192.168.1.2 will be used as a "write" connection. Database credentials, prefix, charset and all other options in the main mysql array will be shared across both connections.

2. Run the query

Once you have configured the database connection, you can use the DB run query class.

Run a Select query

$results = DB::select('select * from users where id = ?', array(1));
Copy after login

The results select method always returns an array.


Run an Insert statement

 DB::insert('insert into users (id, name) values (?, ?)', array(1, 'Dayle'));
Copy after login

Run an Update statement

  DB::update('update users set votes = 100 where name = ?', array('John'));
Copy after login

Run a Delete statement

DB::delete('delete from users');
Copy after login

Note: The number of rows returned by the update and delete statements affects the operation.

Run a general statement

DB::statement('drop table users');
Copy after login

Query event monitor

You can query event monitor using DB::listening method:

DB::listen(function($sql, $bindings, $time){ //});
Copy after login

3. Database transactions

To run a set of operations within a database transaction, you can use the transaction method:

 DB::transaction(function(){ DB::table('users')->update(array('votes' => 1)); DB::table('posts')->delete();});
Copy after login

Note: Any exception thrown during transaction shutdown will cause the automatic transaction to be rolled back

Sometimes you may need to start a transaction:

DB::beginTransaction();
Copy after login

You can rollback the transaction via the rollback method:

DB::rollback();
Copy after login

Finally, you can commit a transaction via the commit method:

DB::commit();
Copy after login

4. Accessing Connections

When using multiple connections, you can access them through the DB::Connection method:

$users = DB::connection('foo')->select(...);
Copy after login

You can also access the original, underlying PDO instance:

$pdo = DB::connection()->getPdo();
Copy after login

Sometimes you may need to reconnect to a given database:

DB::reconnect('foo');
Copy after login

If you need to disconnect from a given database that would exceed the underlying PDO instance'smax_connections limit, use the disconnect method:

DB::disconnect('foo');
Copy after login

5. Query logs

By default, Laravel logs all queries running the current request in memory. However, in some cases, such as when inserting a large number of rows, this may cause the application to use excess memory. To disable the log, you can use the disableQueryLog method:

DB::connection()->disableQueryLog();
Copy after login

o To get a set of executed queries, you can use the getQueryLog method:

$queries = DB::getQueryLog();
Copy after login

For more related articles summarizing the operation methods of the PHP development framework Laravel database, please Follow PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!