通过 webman/database 使用 Eloquent 的 duckdb 驱动

chen

通过修改 vendor/webman/database/src/Initializer.php 加上的

$capsule->getDatabaseManager()->extend('duckdb', function ($config, $name) {
    $config['name'] = $name;
    $connector = new DuckDBConnector();
    $duckdb = $connector->connect($config);
    return new DuckDBConnection($duckdb, $config['database'], $config['prefix'], $config);
});

请问是否可以不通过修改这个文件,类似 laravel 的 ServiceProvider 来实现

不然以后框架升级,改来改去很麻烦

208 1 1
1个回答

walkor 打赏

webman提供了bottstrap机制,在进程启动时执行,类似 ServiceProvider,并且更灵活。

安装 composer require webman/console (已安装则忽略)。

执行 php webman make:bootstrap duckdb (名称随意,这里使用duckdb)

然后修改 app/bootstrap/Duckdb.php

<?php

namespace app\bootstrap;

use support\Model;
use Webman\Bootstrap;

class Duckdb implements Bootstrap
{
    public static function start()
    {
        $manager = Model::getConnectionResolver();
        $manager->extend(...);
    }
}

reload生效

🔝