I've got a class that extends the capsule manager of eloquent :
class Database extends \Illuminate\Database\Capsule\Manager
Inside of it, I'm adding a connection in the constructor :
public function __construct()
{
parent::__construct();
try {
$this->addConnection([
'driver' => 'mysql',
'host' => $server,
'database' => $database,
'username' => $username,
'password' => $password,
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
]);
$this->setAsGlobal();
$this->bootEloquent();
} catch (\Exception $ex) {
exit("Can't connect to database");
}
}
The problem here is that the catch is never called, if any of the database connection information is false, I get a Fatal error: Uncaught PDOException
and not the exit I'm looking to get.
I suppose the problem is due to me having my own class that extends of the capsule manager, but how do I catch the connection errors in my own class using eloquent?
EDIT : Traceback -
Fatal error: Uncaught PDOException: PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/vendor/illuminate/database/Connectors/Connector.php:70 Stack trace: #0 /var/www/vendor/illuminate/database/Connectors/Connector.php(70): PDO->__construct('mysql:host=mari...', 'root', 'root', Array) #1 /var/www/vendor/illuminate/database/Connectors/Connector.php(46): Illuminate\Database\Connectors\Connector->createPdoConnection('mysql:host=mari...', 'root', 'root', Array) #2 /var/www/vendor/illuminate/database/Connectors/MySqlConnector.php(24): Illuminate\Database\Connectors\Connector->createConnection('mysql:host=mari...', Array, Array) #3 /var/www/vendor/illuminate/database/Connectors/ConnectionFactory.php(182): Illuminate\Database\Connectors\MySqlConnector->connect(Array) #4 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors{closure}() #5 /var/www/vendor/illuminate/database/Connection.php(918): call_user_func(Object(Closure)) #6 /va in /var/www/vendor/illuminate/database/Connection.php on line 664
Having the class looking like this, and extending the select
, update
, insert
functions :
class Database extends \Illuminate\Database\Capsule\Manager
{
public function __construct()
{
}
public static function select(string $query, array $params = [])
{
}
public static function insert(string $query, array $params = [])
{
}
public static function update(string $query, array $params = [])
{
return parent::update($query, $params);
}
}
And then writing for example this :
new Database;
Database::update('XXX', []);