webman结合webman-admin,其中的database.php设定表前缀

久光

在设定表前缀的情况下,webman-admin的TableController会出现前缀重叠的情况

return [
    'default'     => 'mysql',
    'connections' => [
        'mysql' => [
            'driver'    => env('MYSQL_DRIVER', 'mysql'),
            'host'      => env('MYSQL_HOST', '127.0.0.1'),
            'port'      => env('MYSQL_PORT', '3306'),
            'database'  => env('MYSQL_DATABASE', 'db_webman'),
            'username'  => env('MYSQL_USERNAME', 'root'),
            'password'  => env('MYSQL_PASSWORD', 'root'),
            'charset'   => env('MYSQL_CHARSET', 'utf8mb4'),
            'collation' => env('MYSQL_COLLATION', 'utf8mb4_general_ci'),
            'prefix'    => env('MYSQL_PREFIX', 'wa_'),
            'strict'    => true,
            'engine'    => null,
        ],
    ],
];

在/vendor/illuminate/database/Schema/Builder.php 第612行

        $prefix = $this->connection->getConfig('prefix_indexes')
                    ? $this->connection->getConfig('prefix')
                    : '';
出现读取数据库的前缀配置,
但是在/plugin/admin/app/controller/TableController.php文件下
167行并没有关联表前缀的配置注入
Util::db()->statement("ALTER TABLE `$table_name` COMMENT $table_comment");
406 1 0
1个回答

walkor 打赏

webman-admin 设计的时候没有设置前缀,设置前缀后会导致非前缀的表读取不到。

  • 久光 2024-07-10

    这就很尴尬,是统一表前缀有瑕疵还是什么问题,感觉这样开发不友好

  • walkor 2024-07-10

    数据库用的laravel的库,瑕疵肯定没有。
    webman-admin 数据库管理部分设计的时候要求能够管理数据库里的所有表。如果设置了前缀,就只能管理前缀的表。
    比如你有一个现有项目,没有前缀或者是其它前缀,装了webman-admin后,能够管理现有项目的表。如果加了前缀,就只能管理webman-admin项目的表。

  • 久光 2024-07-10

    那相当于webman-admin如果要当管理后台用,得把它改到适配表前缀设置,如果是老项目,那可能这个确实会很方便,感谢大佬解惑

×
🔝