Как использовать несколько баз данных на основе subdomein в Laravel - PullRequest
0 голосов
/ 18 апреля 2019

Я хочу получить доступ к отдельной базе данных, основанной на поддомене. Все остальные настройки остаются прежними: имя пользователя, пароль и т. Д. Необходимо изменить только имя базы данных.

Я добавляю это в файл database.php

'subdomain' => [
            'driver' => 'mysql',
            'host' => '',
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

Я также создал Middleware

`$subdomain = $request->route()->account;

    $customer = Customer::where( 'sub_domain', $subdomain )->first();

    if( ! $customer ) {
        // account not found, do something else
    } else {
        Config::set('database.connections.subdomain.host', 'testdomain');
    }
    return $next($request);`

это в route.php

Route::group(['domain' => $domain, 'middleware' => 'subdomain'],function () {});

Использование protected $connection = 'subdomain'; в модели

в .env Я использую базу данных по умолчанию для проверки имени базы данных клиентов

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=ispsoft
DB_USERNAME=root
DB_PASSWORD=

Я получил имя базы данных пользователей поддоменов. Но не подключена база данных sudomain И я не получил значение из базы данных subdomain

1 Ответ

0 голосов
/ 18 апреля 2019

Попробуйте установить $table вашей модели, основываясь на поддомене. Если это просто другая схема MySQL, вы должны быть в состоянии сделать что-то вроде этого:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Widget extends Model
{
    /**
     * The table associated with the model.
     *
     * @var string
     */
    $subdomain = Config::get('database.connections.subdomain.host', 'testdomain');

    protected $table = $subdomian.'.widgets';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...