Laravel - MySQL数据库的使用详解1(安装配置、基本用法)
一、数据库配置
(1)打开 config 文件夹下的 database.php 文件,修改 mysql 部分的连接配置。
'mysql' => [ 'driver' => 'mysql', //数据库的类型 'host' => env('DB_HOST', '127.0.0.1'), //数据库的位置 'port' => env('DB_PORT', '3306'), //端口号 'database' => env('DB_DATABASE', 'hangge'), //数据库名 'username' => env('DB_USERNAME', 'root'), //用户名 'password' => env('DB_PASSWORD', 'hangge1234'), //密码 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8', //字符集 'collation' => 'utf8_unicode_ci', //排序方式 'prefix' => '', //前缀 'prefix_indexes' => true, 'strict' => true, //Strict模式 'engine' => null, //引擎 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ],
(2)接着还需要编辑项目根目录下的 .env 文件,修改数据库部分:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=hangge DB_USERNAME=root DB_PASSWORD=hangge1234
二、基本用法
1,数据查询样例
(1)假设我们数据库中有个用户表(user),里面有如下数据:
(2)首先创建一个用户控制器,路径为 app/Http/Controllers/API/UserController.php,内容如下:
(4)打开浏览器访问 http://localhost:8000/api/getUser/2 可以看到数据已经成功返回了:
<?php namespace app\Http\Controllers\API; use App\Http\Controllers\Controller; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class UserController extends Controller { // 根据id返回用户数据 public function getUser($id) { $users = DB::select('select * from user where id = ?', [$id]); return response()->json([ 'status' => true, 'result' => $users, ]); } }
(3)接着编辑 routes/api.php 文件,增加对应的 API 路由:
<?php use Illuminate\Http\Request; // 请求地址则为 http://域名/api/getUser/xx Route::get('/getUser/{id}', 'API\UserController@getUser');
(4)打开浏览器访问 http://localhost:8000/api/getUser/2 可以看到数据已经成功返回了:
如果页面显示连接错误的话,可以参考我的另一篇文章内容解决:
2,其它的一些常用操作
(1)插入数据
(2)更新数据
(3)删除数据
(4)使用 DB::statement 可以执行一些通用语句,比如下面删除整个 user 表:
DB::insert('insert into user (username, password) values (?, ?)', ['pikachu', '334455']);
(2)更新数据
// 会返回受影响的行数 $rows = DB::update('update user set password = ? where id = ?', ['222', 2]);
(3)删除数据
// 会返回受影响的行数 $rows = DB::delete('delete from user where id = ?', [3]);
(4)使用 DB::statement 可以执行一些通用语句,比如下面删除整个 user 表:
DB::statement('drop table user');
3,数据库事务
(1)在 transaction 闭包中的任何异常都会导致事务自动回滚:
(2)我们也可以手动控制事务的开启、回滚、提交:
(3)如果需要重连数据库可以通过如下方法:
(4)如果因为超出 PDO 实例的最大连接数限制而要断开连接,使用 disconnect 方法:
DB::transaction(function() { DB::update('update user set password = ? where id = ?', ['23', 2]); DB::delete('delete from user where id = ?', [3]); });
(2)我们也可以手动控制事务的开启、回滚、提交:
// 开启事务 DB::beginTransaction(); // 回滚事务 DB::rollback(); // 提交事务 DB::commit();
4,多个数据库连接访问
(1)当使用多个数据库连接时,可以通过 DB::connection 方法访问它们:
(2)我们可以通过 PDO 实例访问原生连接:
$users = DB::connection('foo')->select(...);
(2)我们可以通过 PDO 实例访问原生连接:
$pdo = DB::connection()->getPdo();
(3)如果需要重连数据库可以通过如下方法:
DB::reconnect('foo');
(4)如果因为超出 PDO 实例的最大连接数限制而要断开连接,使用 disconnect 方法:
DB::disconnect('foo');