Bonjour,

J'ai un projet Symfony 6 , qui doit se connecter à 2 bases de données différentes (une Mysql et une sql server).

Mon problème est que lorsque je veux accèder à une table de la base sql serveur, j'ai une erreur doctrine m'indiquant que la table n'existe pas.

Voici l'erreur :

An exception occurred while executing a query: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.F_COMPTEG' doesn't exist
Ce qui est normal car la base "test" est ma base Mysqj et non SQl server. Pourtant d'après moi, tout est bien configuré.

Voici mon fichier de configuration de doctrine :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
parameters:
    # Adds a fallback DATABASE_URL if the env var is not set.
    # This allows you to run cache:warmup even if your
    # environment variables are not available yet.
    # You should not need to change this value.
    env(DATABASE_URL): ''
 
doctrine:
    dbal:
        default_connection: default
 
        connections:
            default:
                driver: 'pdo_mysql'
                server_version: '5.7'
                charset: utf8mb4
                default_table_options:
                    charset: utf8mb4
                    collate: utf8mb4_unicode_ci
                url: '%env(resolve:DATABASE_URL)%'
            sqlserver:
                driver: 'pdo_sqlsrv'
#                url: '%env(resolve:DATABASE_SQL_SERVER_URL)%'
                host: 'sql-server-db'
                port: '1433'
                dbname: 'pfo'
                user: 'sa'
                password: 'xxxxx'
                charset: UTF8
                options:
                    driverOptions:
                        SSLVerifyServerCertificate: false
    orm:
        default_entity_manager: default
        auto_generate_proxy_classes: '%kernel.debug%'
        entity_managers:
            default:
                connection: default
                naming_strategy: doctrine.orm.naming_strategy.underscore
                auto_mapping: true
                mappings:
                    App:
                        is_bundle: false
                        type: attribute
                        dir: '%kernel.project_dir%/src/Entity'
                        prefix: 'App\Entity'
                        alias: App
            sqlserver:
                connection: sqlserver
                naming_strategy: doctrine.orm.naming_strategy.underscore
                mappings:
                    EntitySqlServer:
                        is_bundle: false
                        type: attribute
                        dir: '%kernel.project_dir%/src/EntitySqlServer'
                        prefix: 'App\EntitySqlServer'
                        alias: App
Mon fichier service.yml :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
App\Controller\DefaultController:
   arguments:
     $em: '@doctrine.orm.default_entity_manager' 
     $sqlServer: '@doctrine.orm.sqlserver_entity_manager'
Et mon controller :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
 
namespace App\Controller;
 
use App\Entity\Edito;
use App\EntitySqlServer\F_COMPTEG;
use App\Service\StatService;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\Persistence\ManagerRegistry;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
 
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
 
class DefaultController extends AbstractController
{
 
 
public function __construct(private EntityManagerInterface $em,private EntityManagerInterface $sqlServer,private TranslatorInterface $translator,private StatService $statService)
{
 
 }
 
#[Route(path: '/', name: 'home_home_home')]
 #[Security("is_granted('', 'read')")]
public function index(ManagerRegistry $entityManager)
{
 
if($this->getUser() === null ){
 
return $this->redirect('/logout');
}
 
$this->sqlServer->getRepository(F_COMPTEG::class)->findAll();
 
$stats = $this->statService->facturationByYear(date('Y'));
$totalFacture =$this->statService->totalFacturationByYear(date('Y'));
 
$edito = $this->em->getRepository(Edito::class)->find(1);
 
return $this->render('index.html.twig', ['edito' => $edito,'stats'=>$stats,'totalFacture'=>$totalFacture
]);
}
}
Auriez-vous une idée d'où peut provenir le problème ?

Merci d'avance