tursodatabase/turso-doctrine-dbal

基于LibSQL扩展的Doctribe DBAL驱动实现

1.2.1 2024-08-20 08:21 UTC

This package is auto-updated.

Last update: 2024-09-04 21:28:22 UTC


README

Turso + TypeScript

Turso + Doctrine DBAL

生产级SQLite。由 libSQLlibSQL 扩展 为PHP提供支持。

Turso · 快速入门 · 示例 · 文档 · Discord · 博客 & 指南

Doctrine DBAL的LibSQL驱动

LibSQL是SQLite的一个分支,此包是 #1 LibSQL驱动,它使用LibSQL原生扩展/驱动/无论什么运行,并支持Doctrine DBAL。

需求

在使用此包之前,您需要安装和配置 PHP的LibSQL原生扩展。您可以从 LibSQL扩展 - 发布 下载。

  1. 📦 解压缩存档
  2. 🗃 在您的机器上的某个地方定位
  3. 💽 复制指向该扩展/驱动器的相对路径
  4. 📂 打开 php.ini,搜索 ;extension(如果您使用nano,则按ctrl+w然后搜索它)
  5. 📝 在下一行添加 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();

文档

  1. Turso 快速入门 — 学习如何创建和连接您的第一个数据库。
  2. SDK 快速入门 — 学习如何使用libSQL客户端安装和执行查询。
  3. SDK 参考 — 深入了解libSQL SDK参考和示例。

什么是Turso?

Turso 是基于 libSQL 的SQLite兼容数据库,libSQL是SQLite的开放贡献分支。它允许组织扩展到数以万计的数据库,并支持复制到任何位置,包括您自己的服务器,以实现微秒级延迟的访问。

了解更多关于您可以用Turso做什么