当前位置: > > > Laravel - MySQL数据库的使用详解1(安装配置、基本用法)

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,内容如下:
<?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)插入数据
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)如果需要重连数据库可以通过如下方法:
DB::reconnect('foo');

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