IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Symfony] Base de données multiples


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2024
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2024
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [Symfony] Base de données multiples
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    5
     
    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

  2. #2
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Bonjour.
    Peux-tu nous montrer ton fichier.env ?
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/09/2017, 22h02
  2. Réponses: 1
    Dernier message: 04/04/2012, 11h20
  3. probleme insertion multiple d'une formulaire dans la base de donné
    Par geni1985 dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 03/04/2011, 21h48
  4. [Tomcat][Oracle] connexion base de donnes debutant....
    Par yogz dans le forum Tomcat et TomEE
    Réponses: 8
    Dernier message: 16/07/2004, 13h32
  5. connexion base de donné
    Par saidi dans le forum MFC
    Réponses: 3
    Dernier message: 07/08/2002, 22h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo