gpt4 book ai didi

Laravel Hyn\Multi-Tenant Database [租户] 未配置

转载 作者:行者123 更新时间:2023-12-04 17:08:38 25 4
gpt4 key购买 nike

我正在开发 Multi-Tenancy Laravel 应用程序,遇到了 hyn\multi-tenant 包的问题。 hyn\multi-tenant 的文档指出租户数据库连接将由包处理,只要系统连接可用并且用户有添加和修改数据库的权限,包将处理所有租户数据库连接.

尝试在我的应用程序中创建租户时,出现错误:未配置数据库 [租户]。

我在 SO 上看到了这个问题的许多答案,但是它们都指的是客户模型或本地主机配置。 Hyn 删除了 Customer 模型,我遇到的问题也发生在我通过 Laravel Forge 发布的 DigitalOcean 服务器上。

如果有人能提供一些帮助,我将不胜感激。

我的 .env(本地)

APP_NAME="Multi-Tenant"
APP_ENV=local
APP_KEY=base64:j1aLzU7m5LWK1keo/FjgbtpwTpVZ1NBj29zuXIByHek=
APP_DEBUG=true
APP_URL_BASE=localhost:8888/lms/public
APP_URL=http://${APP_URL_BASE}

LOG_CHANNEL=stack

DB_CONNECTION=system
DB_HOST=127.0.0.1
DB_PORT=8889
DB_DATABASE=lmssystem
DB_USERNAME=lmssystem
DB_PASSWORD=lmssystem

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

LIMIT_UUID_LENGTH32=true

我的数据库.php

return [
'default' => env('DB_CONNECTION', 'system'),
'connections' => [

'system' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '8889'),
'database' => env('DB_DATABASE', 'lmssystem'),
'username' => env('DB_USERNAME', 'lmssystem'),
'password' => env('DB_PASSWORD', 'lmssystem'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => 'InnoDB',
],
],
'migrations' => 'migrations',
'redis' => [

'client' => 'predis',

'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_DB', 0),
],

'cache' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_CACHE_DB', 1),
],

],

];

最佳答案

这个问题原来是我的应用程序中的逻辑错误,而不是数据库配置问题。我被迫偏离 Ashok 在 Medium 上的文章 [ https://medium.com/@ashokgelal/a-full-featured-multi-tenant-app-with-laravel-part-1-4049a3cc229d][1]因为 Hyn\Multi-Tenant 包不再支持客户模型。

在开发了我自己的客户端模型,并扩展了现有的网站和主机名模型以与客户端模型交互之后,我不得不重新编写 tenant:create 命令。在这里,我直接从他们的扩展模型创建了网站和主机名,而不是根据 Hyn 文档(复制在下面)通过存储库

Tenancy is heavily driven by events. For event listeners to properly work, you have to use the repositories to create new websites and hostnames. use Hyn\Tenancy\Models\Website; use Hyn\Tenancy\Contracts\Repositories\WebsiteRepository;

$website = new Website;
app(WebsiteRepository::class)->create($website);
dd($website->uuid);

$hostname = new Hostname;
$hostname->fqdn = 'luceos.demo.app';
app(HostnameRepository::class)->attach($hostname, $website);

通过存储库创建解决了:

Database [tenant] not configured

错误。

关于Laravel Hyn\Multi-Tenant Database [租户] 未配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52619940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com