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),里面有如下数据:

原文:Laravel - MySQL数据库的使用详解1(安装配置、基本用法)

(2)首先创建一个用户控制器,路径为 app/Http/Controllers/API/UserController.php,内容如下:

<?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 可以看到数据已经成功返回了:

如果页面显示连接错误的话,可以参考我的另一篇文章内容解决:

原文:Laravel - MySQL数据库的使用详解1(安装配置、基本用法)

2,其它的一些常用操作

(1)插入数据

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 闭包中的任何异常都会导致事务自动回滚:

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 方法访问它们:

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

(2)我们可以通过 PDO 实例访问原生连接:

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

(3)如果需要重连数据库可以通过如下方法:

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

(4)如果因为超出 PDO 实例的最大连接数限制而要断开连接,使用 disconnect 方法:

DB::disconnect('foo');