darkterminal/libsql-doctrine-dbal

该软件包已被废弃,不再维护。作者建议使用 tursodatabase/turso-doctrine-dbal 软件包。

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

0.0.3 2024-06-02 14:48 UTC

This package is auto-updated.

Last update: 2024-09-14 04:34:20 UTC


README

此存储库已停止维护,并已移动到
官方 Turso 数据库 存储库下的 Turso Doctrine DBAL 名称。

Turso + TypeScript

Turso + Doctrine DBAL

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

Turso · 快速入门 · 示例 · 文档 · Discord · 博客 & 教程

Doctrine DBAL 的 LibSQL 驱动

Latest Version on Packagist Total Downloads

LibSQL 是 SQLite 的分支,此软件包是 LibSQL 驱动 #1,它使用 LibSQL 本地扩展/驱动/任何东西原生运行,并支持 Doctrine DBAL。

需求

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

  1. 📦 解压缩存档
  2. 🗃 在您的计算机中找到合适的位置
  3. 💽 复制指向该扩展/驱动的相对路径
  4. 📂 打开 php.ini,搜索 ;extension(如果您使用 nano,请按 ctrl+w 然后搜索它)
  5. 📝 在下一行添加 extension=liblibsql_php.so(在 Linux 中)并在开头不要加 ;

软件包安装

composer require darkterminal/libsql-doctrine-dbal

配置

LibSQL 有 4 种与数据库交互的连接类型:内存连接、本地连接、远程连接和远程副本连接(嵌入式副本)。

内存连接

$params = [
    "url"               => ":memory:",
    'driverClass'       => \Darkterminal\LibSQL\DBAL\Driver::class,
];

本地连接

$params = [
    "url"               => "database.db",
    'driverClass'       => \Darkterminal\LibSQL\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'       => \Darkterminal\LibSQL\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'       => \Darkterminal\LibSQL\DBAL\Driver::class,
];

用法

use Doctrine\DBAL\DriverManager;

require_once __DIR__ . '/vendor/autoload.php';

$params = [
    "url"               => ":memory:",
    'driverClass'       => \Darkterminal\LibSQL\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 可以做什么