Comprobar si estás conectado a la base de datos en Laravel
Recientemente estuvimos haciendo debugging a una aplicación que estaba fallando en el pipeline. Localizamos el siguiente problema:
Se estaba haciendo una query a la base de datos desde un Service Provider, que se ejecutaba justo al iniciar la aplicación. Normalmente esto no es un problema, pero si el .env no está configurado aún, al hacer la query va a fallar porque el Service Provider se ejecuta antes de ejecutar el migrate.
Entonces, si es totalmente necesario poner una query en el Service Provider, podemos comprobar antes si la aplicación ya está conectada a la base de datos y si una tabla existe.
Comprobar conexión a la base de datos en Laravel
Utilizando la facade de DB
de Laravel es bastante sencillo comprobar si estamos conectados a la base de datos:
use Illuminate\Support\Facades\DB;
try {
DB::connection()->getPDO();
DB::connection()->getDatabaseName();
} catch (\Exception $e) {
// No está conectado
return;
}
Comprobar si una tabla existe en Laravel
Otra de las cosas que nos fallaba era que, al hacer deploy en un nuevo servidor, cuando quería ejecutar el php artisan migrate
por primera vez, la aplicación ya estaría conectada a la base de datos pero no existían las tablas. Entonces, para comprobar que una tabla exista:
use Illuminate\Support\Facades\Schema;
if (! Schema::hasTable('settings')) {
return;
}