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 :
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 :
1 2 3 4 5
|
App\Controller\DefaultController:
arguments:
$em: '@doctrine.orm.default_entity_manager'
$sqlServer: '@doctrine.orm.sqlserver_entity_manager' |
Et mon controller :
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
Partager