laravel-translation-manager icon indicating copy to clipboard operation
laravel-translation-manager copied to clipboard

Should not rely on config('database.default') to select driver

Open gjm opened this issue 4 years ago • 0 comments

In TranslationServiceProvider the database driver is chosen like this:

$db_driver = config('database.default');

if ($db_driver === 'pgsql') {
    $translatorRepository = 'Vsch\TranslationManager\Repositories\PostgresTranslatorRepository';
} else {
    $translatorRepository = 'Vsch\TranslationManager\Repositories\MysqlTranslatorRepository';
}

This approach assumes your connection has the same name as the driver it is using. I, for example, have more than one configured connection, all using the same driver, and, in my case the driver is not chosen properly.

I think it should be something more like this:

$connection = config('database.default');
$db_driver = config('database.connections.' .$connection. '.driver');

if ($db_driver === 'pgsql') {
    $translatorRepository = 'Vsch\TranslationManager\Repositories\PostgresTranslatorRepository';
} elseif ($db_driver === 'mysql') {
    $translatorRepository = 'Vsch\TranslationManager\Repositories\MysqlTranslatorRepository';
} else {
    throw new \Exception('Unsupported DB driver!');
}

This would make sure the proper driver is used (and also throw an Exception if an unsupported driver is used).

gjm avatar Oct 22 '19 15:10 gjm