webman的gateway连接数据库为null

放肆青春

问题描述

前提:我用的webman-admin插件的model层来查询的数据,启动webman项目后,我确认所有http的api他们都没正常

问题:webman的gateway连接数据库为null

报错信息如下图:
截图

代码如下,报错在第35行代码处的$user_data = User::where('id', 1)->first();:

<?php

namespace app\index\controller;

use Exception;
use GatewayWorker\Lib\Gateway;
use plugin\admin\app\model\User;

class Events
{
    public static function onWorkerStart($businessWorker)
    {
        // 可以在这里初始化数据库连接或者其他需要在Worker启动时执行的业务逻辑
        echo "Worker started\n";
    }

    public static function onConnect($client_id)
    {
        // 当客户端连接时触发
        echo "New connection: $client_id\n";
    }

    /**
     * @throws Exception
     */
    public static function onMessage($client_id, $message)
    {
        $message = json_decode($message, true);
        $type = $message['type'];
        if ($type == 'init') {
            // 当客户端连接时触发
            Gateway::sendToClient($client_id, json_encode(['code' => 10, 'msg' => '连接成功'], true));
        }
        if ($type == 'send') {
            $user_data = User::where('id', 1)->first();
        }
    }

    public static function onClose($client_id)
    {
        // 当客户端断开连接时触发
        echo "Client disconnected: $client_id\n";
    }
}
207 2 2
2个回答

放肆青春

像下面这样子该来连接是可以的,但是这样子和webman自身实例化的数据库连接不一样,会占用资源,请问如何使用webman项目启动后的自带数据库连接呢?

代码如下:

public static function onWorkerStart($businessWorker)
    {
        // 获取 Webman-admin 的数据库配置
        $configPath = base_path() . '/plugin/admin/config/database.php';
        $databaseConfig = include($configPath);
        $mysqlConfig = $databaseConfig['connections']['mysql'] ?? [];

        // 初始化数据库连接
        if (!empty($mysqlConfig)) {
            $capsule = new Manager();
            $capsule->addConnection($mysqlConfig);
            $capsule->setAsGlobal();
            $capsule->bootEloquent();

            echo "Worker started and Webman-admin database connection initialized.\n";
        } else {
            echo "Database configuration not found or invalid.\n";
        }
        // 可以在这里初始化数据库连接或者其他需要在Worker启动时执行的业务逻辑
        echo "Worker started\n";
    }
  • 暂无评论
yongdao35

用这个webman的gatewayWorker插件,https://www.workerman.net/plugin/5 然后就可以直接用数据库了

  • 暂无评论
×
🔝