En cours d'exécution dans un problème où les travaux ne peuvent pas se connecter à la base de données.Travail multi-locataire Laravel
Invalid catalog name: 1046 No database selected
J'ai besoin de définir le compte dans le travail donc j'ai une classe étendue pour vous assurer que le compte est envoyé avec le travail afin que je puisse assurer la base de données peut se connecter à la base de données correcte.
<?php
namespace App\Jobs;
use Illuminate\Support\Facades\DB;
abstract class Job
{
protected $account;
public function start()
{
// runs when creating the job, so the config holds the correct value
$this->account = config('database.connections.tenant.database');
}
public function handle()
{
// since the handle function runs outside of setting the job
// the database is no longer set in the config
config()->set('database.connections.tenant.database', $this->account);
// try to force it to reconnect incase it already did for some reason.
DB::reconnect();
}
}
Ceci est ma version actuelle Je joue avec, les variations semblent ne pas l'affecter. Je exécute en principe start
dans le constructeur, puis m'assure qu'il exécute le parent handle
dans le travail afin qu'il amorce la configuration correcte de la base de données.
Le résultat final que je recherche est de définir la base de données des locataires comme account
et lors de son exécution, elle utilise cette base de données pour toutes les requêtes.