Symfony

1.簡介

Symfony是一款PHP語言的Web應(yīng)用程序框架。它的目標(biāo)是提高Web應(yīng)用程序開發(fā)的效率和質(zhì)量,同時(shí)遵循企業(yè)級開發(fā)標(biāo)準(zhǔn)。Symfony是由法國的SensioLabs公司開發(fā)的,目前已經(jīng)成為了PHP領(lǐng)域中最受歡迎的框架之一。

本文介紹 Symfony 該如何連接使用瀚高數(shù)據(jù)庫。

2.加載驅(qū)動

具體操作步驟請參考 php_pdo_pgsql 接口說明文檔。

3.數(shù)據(jù)庫連接

3.1.數(shù)據(jù)庫準(zhǔn)備

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.數(shù)據(jù)庫配置

環(huán)境變量文件 .env 配置示例

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

3.3.查詢數(shù)據(jù)

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擴(kuò)展

解決方案:php.ini 文件,檢查pdo_pgsql是否加載成功

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

問題原因:瀚高數(shù)據(jù)庫支持的認(rèn)證密碼加密方式包括 md5, sm3 和 scram-sha-256 ,報(bào)錯是因?yàn)槭褂昧藄m3,驅(qū)動不支持國密算法

解決方案一:數(shù)據(jù)庫密碼認(rèn)證方式修改為 md5 或 scram-sha-256

解決方案二:下載替換對應(yīng)版本的驅(qū)動,具體操作方法請參考 php_pdo_pgsql 接口說明