Возможно, вы захотите узнать, какой тип DSN возвращает метод getDSN () класса SqlServerConnector Ларавела.
Он находится в: /vendor/laravel/framework/src/Illuminate/Database/Connectors/SqlServerConnector.php
В моем случае я использовал ODBC, но метод getDSN () возвращал DSN Dblib по умолчанию.(ODBC и Dblib оба были в массиве getAvailableDrivers (), но сначала он проверяет Dblib.)
Метод getDsn () класса SqlServerConnector в laravel v5.6:
protected function getDsn(array $config)
{
// checks for dblib first, by default. =(
if (in_array('dblib', $this->getAvailableDrivers())) {
return $this->getDblibDsn($config);
} elseif ($this->prefersOdbc($config)) {
return $this->getOdbcDsn($config);
}
return $this->getSqlSrvDsn($config);
}
UPDATE:Я только заметил, что они изменили его в laravel v5.7:
protected function getDsn(array $config)
{
// Checking for ODBC first, before DBlib!
if ($this->prefersOdbc($config)) {
return $this->getOdbcDsn($config);
}
if (in_array('sqlsrv', $this->getAvailableDrivers())) {
return $this->getSqlSrvDsn($config);
} else {
return $this->getDblibDsn($config);
}
}
За этот ответ В итоге я создал переопределяющий класс SqlServerConnector и зарегистрировал его в AppServiceProvider, который сначала проверял ODBC.