DatabaseConnectionFactory.php 1.1 KB
<?php

namespace App\Database;

use App\Database\MySQL\AutoRetryMySqlConnection;
use Illuminate\Database\Connectors\ConnectionFactory;
use Illuminate\Database\Connection;

/**
 * Class DatabaseConnectionFactory
 *
 * @package App\Database
 */
class DatabaseConnectionFactory extends ConnectionFactory
{
    /**
     * Create a new connection instance.
     *
     * @param  string   $driver
     * @param  \PDO|\Closure     $connection
     * @param  string   $database
     * @param  string   $prefix
     * @param  array    $config
     * @return \Illuminate\Database\Connection
     *
     * @throws \InvalidArgumentException
     */
    protected function createConnection($driver, $connection, $database, $prefix = '', array $config = [])
    {
        if ($driver !== 'mysql') {
            return parent::createConnection($driver, $connection, $database, $prefix, $config);
        }

        if ($resolver = Connection::getResolver($driver)) {
            return $resolver($connection, $database, $prefix, $config);
        }

        return new AutoRetryMySqlConnection($connection, $database, $prefix, $config);
    }
}