Laravel

1.简介

Laravel 是一个 Web 应用框架, 有着表现力强、语法优雅的特点。Web 框架为创建应用提供了一个结构和起点,你只需要专注于创造,我们来为你处理细节。

Laravel 致力于提供出色的开发体验,同时提供强大的特性,例如完全的依赖注入,富有表现力的数据库抽象层,队列和计划任务,单元和集成测试等等。

本文介绍 laravel 该如何连接使用瀚高数据库。

2.加载驱动

具体操作步骤请参考 php_pdo_pgsql 接口说明文档。

3.数据库连接

3.1.数据库准备

create database laravel;

CREATE TABLE student(
id bigserial NOT NULL,
name character varying(255) NOT NULL,
sex character varying(255) NOT NULL,
age integer NOT NULL,
created_at timestamp without time zone,
updated_at timestamp without time zone,
PRIMARY KEY (id)
);

3.2.数据库配置

环境变量文件 .env 配置示例

DB_CONNECTION=pgsql
DB_HOST=192.168.100.101
DB_PORT=5866
DB_DATABASE=laravel
DB_USERNAME=sysdba
DB_PASSWORD=Qwer@1234

应用配置文件 database.php 配置示例:

使用env函数,表示先从.env文件里面获取, 如果获取成功则使用, 如果获取失败, 则使用env函数的第二个参数

<?php

use Illuminate\Support\Str;

return [

/*
|--------------------------------------------------------------------------
| Default Database Connection Name
|--------------------------------------------------------------------------
| 默认数据库连接为mysql,可以在.env文件中修改DB_CONNECTION的值
*/

'default' => env('DB_CONNECTION', 'pgsql'),

/*
|--------------------------------------------------------------------------
| Database Connections
|--------------------------------------------------------------------------
| 针对不同数据库相关配置,包括sqlite、mysql、Postgres、SQL Server
*/

'connections' => [

...

'pgsql' => [
'driver' => 'pgsql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
'schema' => 'public',
'sslmode' => 'prefer',
],

],

];

3.3.增加数据库记录

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;

class StudentController extends Controller
{
/**
* 数据写入
*
* @return Response
*/
public function insert()
{
DB::insert("insert into student(name, sex, age) values (?,?,?)",['李四', '女','20']);
DB::insert("insert into student(name, sex, age) values (?,?,?)",['王五', '男','18']);
$res="数据写入成功!";
echo $res;
}
}

3.4.查询数据库记录

/**
* 列表查询
*/

public function select()
{
$students = DB::select('select * from student');
echo json_encode($students);
}

3.5.更新数据库记录

/**
* 更新数据
*/

public function update()
{
DB::update("update student set age=30 where name='李四'");
$res="数据更新成功!";
echo $res;
}

3.6.删除数据库记录

/**
* 删除数据
*/

public function delete()
{
DB::delete("delete from student where name='王五'");
$res="数据删除成功!";
echo $res;
}

4.常见问题

1)could not find driver报错

问题原因:php未成功加载pdo_pgsql扩展

解决方案:php.ini 文件,检查pdo_pgsql是否加载成功

**2)SQLSTATE[08006] [7] authentication method 13 not supported **

问题原因:瀚高数据库支持的认证密码加密方式包括 md5, sm3 和 scram-sha-256 ,报错是因为使用了sm3,驱动不支持国密算法

解决方案一:数据库密码认证方式修改为 md5 或 scram-sha-256

解决方案二:下载替换对应版本的驱动,具体操作方法请参考 php_pdo_pgsql 接口说明