tursodatabase / turso-doctrine-dbal
基于LibSQL扩展的Doctribe DBAL驱动实现
1.2.1
2024-08-20 08:21 UTC
Requires
- php: >=8.1
- doctrine/dbal: ^4.0
README
Turso + Doctrine DBAL
生产级SQLite。由 libSQL 和 libSQL 扩展 为PHP提供支持。
Turso · 快速入门 · 示例 · 文档 · Discord · 博客 & 指南
Doctrine DBAL的LibSQL驱动
LibSQL是SQLite的一个分支,此包是 #1 LibSQL驱动,它使用LibSQL原生扩展/驱动/无论什么运行,并支持Doctrine DBAL。
需求
在使用此包之前,您需要安装和配置 PHP的LibSQL原生扩展。您可以从 LibSQL扩展 - 发布 下载。
- 📦 解压缩存档
- 🗃 在您的机器上的某个地方定位
- 💽 复制指向该扩展/驱动器的相对路径
- 📂 打开
php.ini
,搜索;extension
(如果您使用nano,则按ctrl+w然后搜索它) - 📝 在下一行添加
extension=liblibsql_php.so
(在Linux中)无需在开头添加;
包安装
composer require tursodatabase/turso-doctrine-dbal
配置
LibSQL有4种类型的连接来与数据库交互:内存连接、本地连接、远程连接和远程副本连接(嵌入副本)。
内存连接
$params = [ "url" => ":memory:", 'driverClass' => \Turso\Doctrine\DBAL\Driver::class, ];
本地连接
$params = [ "url" => "database.db", 'driverClass' => \Turso\Doctrine\DBAL\Driver::class, ];
如果您想创建远程连接或远程副本(嵌入副本)连接,您需要一个现有的数据库来继续。如果没有,请 创建一个。
获取数据库URL
turso db show --url <database-name>
获取数据库认证令牌
turso db tokens create <database-name>
如果您使用 .env
文件,请将凭证分配给 .env
内的环境变量。
TURSO_DATABASE_URL= TURSO_AUTH_TOKEN=
远程连接
$params = [ "auth_token" => "<your-database-auth-token-from-turso>", "sync_url" => "<your-database-url-from-turso>", 'driverClass' => \Turso\Doctrine\DBAL\Driver::class, ];
远程副本(嵌入副本)连接
$params = [ "url" => "database.db", "auth_token" => "<your-database-auth-token-from-turso>", "sync_url" => "<your-database-url-from-turso>", "sync_interval" => 5, // Optional, default is: 5 in seconds "read_your_writes" => true, // Optional, default is: true "encryption_key" => "", // Optional, default is: empty 'driverClass' => \Turso\Doctrine\DBAL\Driver::class, ];
用法
use Doctrine\DBAL\DriverManager; require_once __DIR__ . '/vendor/autoload.php'; $params = [ "url" => ":memory:", 'driverClass' => \Turso\Doctrine\DBAL\Driver::class, ]; $db = DriverManager::getConnection($params); $createTable = "CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER )"; $db->executeStatement($createTable); $insertUsers = <<<SQL INSERT INTO users (name, age) VALUES ('Budi Dalton', 49); INSERT INTO users (name, age) VALUES ('Sujiwo Tedjo', 50); SQL; $db->getNativeConnection()->executeBatch($insertUsers); $result = $db->executeQuery("SELECT * FROM users")->fetchAllAssociative(); var_dump($result); $db->close();
文档
- Turso 快速入门 — 学习如何创建和连接您的第一个数据库。
- SDK 快速入门 — 学习如何使用libSQL客户端安装和执行查询。
- SDK 参考 — 深入了解libSQL SDK参考和示例。
什么是Turso?
Turso 是基于 libSQL 的SQLite兼容数据库,libSQL是SQLite的开放贡献分支。它允许组织扩展到数以万计的数据库,并支持复制到任何位置,包括您自己的服务器,以实现微秒级延迟的访问。
了解更多关于您可以用Turso做什么