数据库使用基础

配置

在Laravel中连接和使用数据库非常简单。 数据库配置在 app/config/database.php 文件中. 所有受支持的数据库系统都列在了配置文件中,在配置文件中可以同时配置多个数据库系统的连接信息, 并指定默认使用哪个数据库连接。

Laravel 目前支持四种数据库系统,分别是: MySQL, Postgres, SQLite, 和 SQL Server。

执行crud语句

完成数据库配置后, 就可以直接使用DB类执行sql语句了.

执行 select 语句

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

select 方法总是返回一个包含查询结果的 array

执行 Insert 语句

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

执行 Update 语句

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

执行 Delete 语句

DB::delete('delete from users');

注意: updatedelete 语句返回操作所影响的数据的行数(int)。

执行非crud语句

DB::statement('drop table users');

可以使用 DB::listen 方法监听数据库操作:

监听数据库操作事件

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

事务

将需要在事务模式下执行的查询放入 transaction 方法内即可:

DB::transaction(function()
{
    DB::table('users')->update(array('votes' => 1));

    DB::table('posts')->delete();
});

同时使用多个数据库系统

有时可能需要同时使用多个数据库系统(MySQL,Postgres,SQLite,SQL Server), 通过DB类的 DB::connection 方法来切换:

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

你可能需要在数据库系统的层面上操作数据库,使用PDO实例即可:

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

使用reconnect方法重新连接一个指定的数据库系统: DB::reconnect('foo');

查询日志

Laravel默认会为当前请求执行的的所有查询生成日志并保存在内存中。 因此, 在某些特殊的情况下, 比如一次性向数据库中插入大量数据, 就可能导致内存不足。 在这种情况下,你可以通过 disableQueryLog 方法来关闭查询日志:

DB::connection()->disableQueryLog();

调用 getQueryLog 方法可以同时获取多个查询执行后的日志:

   $queries = DB::getQueryLog();