マルチテナントアプリケーションを使用して開発中Laravel-5.2 各テナントには個別のデータベースがあります。各テナントには別々のサブドメインがあります。サブドメインを使用してテナントを検出します。マルチテナント環境のLaravel tinker
セットアップモデルTenant
とDatabaseConnection
は、Tenant hasOne DatabaseConnection
とDatabaseConnection belongsTo Tenant
です。 テナントのDB接続は、BeforeMiddleware
から動的に設定されます。これらは完璧に機能します。
今、私はテナントにartisan tinker
を使用します。しかし、php artisan tinker
を実行すると、.env
ファイルにDB証明書が存在するTenant
に接続します。
私は同じためにコンソールコマンドを作ろうとしています。これまでに私が達成したことがあります。
class ClientTinker extends Command {
protected $name = 'cdb:tinker';
public function fire()
{
// get the subdomain
$subdomain = $this->argument('subdomain');
// get the client
$client = Tenant::whereSubdomain($subdomain)->first();
$connection = $client->databaseConnection();
// $connection contains the database server, database name, user name, and password.
// dynamically set connections here. *How?*
...
// *I need to call tinker here. How?*
}
protected function getArguments()
{
return [
['subdomain', InputArgument::REQUIRED, 'Subdomain of the tenant.'],
];
}
どのようにして特定のテナントにDB接続を設定し、どのようにしてtinkerを実行できますか?
http://stackoverflow.com/questions/31281669/how-do-i-connect-to-different-databases-at-run-time –
コンソールコマンドを作成して特定のテナント? – linuxartisan
はい。ですから、 'tinker'を実行する前に' .env'ファイルでDBクレデンシャルを変更する必要はありません。 –