Symfony

1.简介

Symfony是一款PHP语言的Web应用程序框架。它的目标是提高Web应用程序开发的效率和质量,同时遵循企业级开发标准。Symfony是由法国的SensioLabs公司开发的,目前已经成为了PHP领域中最受欢迎的框架之一。

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

2.加载驱动

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

3.数据库连接

3.1.数据库准备

create database symfony;

CREATE TABLE student(
id bigserial NOT NULL,
name character varying(255) NOT NULL,
PRIMARY KEY (id)
);

insert into student(name) values ('zhangsan');
insert into student(name) values ('lisi');
insert into student(name) values ('wangwu');
insert into student(name) values ('zhaoliu');

3.2.数据库配置

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

DATABASE_URL="pgsql://sysdba:Qwer@1234@192.168.100.101:5866/symfony?serverVersion=12&charset=utf8"

3.3.查询数据

DataController.php

<?php
namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Service\DataService;

class DataController extends AbstractController
{
/**
* @Route("/data", name="data")
*/
public function index(DataService $dserv)
{
$students = $dserv->findAll();

return $this->json([
'data' => $students
]);
}
}

DataService.php

<?php

namespace App\Service;

use Doctrine\DBAL\Driver\Connection;

class DataService
{
private $conn;

public function __construct(Connection $conn)
{
$this->conn = $conn;
}

/**
* Finds all countries
*/
public function findAll() {

$queryBuilder = $this->conn->createQueryBuilder();
$queryBuilder -> select('*')->from('student');
$data = $queryBuilder->execute()->fetchAll();

return $data;
}
}

4.常见问题

1)An exception occurred in driver: could not find driver

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

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

2)An exception occurred in driver: SQLSTATE[08006] [7] authentication method 13 not supported

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

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

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