简体   繁体   English

跨数据库加入学说

[英]Cross Database Joins Doctrine

I have 2 connection in my Doctrine with ZF2, but i need make join in twoo databases. 我的Zoct2教义中有2个连接,但是我需要在twoo数据库中进行加入。 The big question is: is it possible to perform a join on two tables which are in different databases and connections? 最大的问题是:是否可以对位于不同数据库和连接中的两个表执行联接?

'connection' => array(
            // Default DB connection
           'orm_default' => array(
                'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
                'params' => array(
                    'host' => 'localhost',
                    'user' => 'root',
                    'port' => '3306',
                    'password' => '',
                    'dbname' => 'MYSQL_TEST',
                    'driverOptions' => array(
                        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"
                    )
                ),
            ),

            // Alternative DB connection
            'orm_alternative' => array(
                'driverClass' => 'Doctrine\DBAL\Driver\PDOSqlsrv\Driver',
                'params' => array(
                    'host' => 'localhost',
                    'user' => 'sa',
                    'port' => '',
                    'password' => 'test',
                    'dbname' => 'MSSQL_TEST',
                ),
            ),
        ),

Entity MYSQL Example: 实体MYSQL示例:

   /**
     * mysql_test
     *
     * @ORM\Table(name="mysql_table")
     * @ORM\Entity
     * @ORM\HasLifecycleCallbacks
     * @ORM\Entity(repositoryClass="MYSQL\Entity\TestRepository")
     */
    class Test
    {
        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer", nullable=false)
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="IDENTITY")
         */
        private $id;

         /**
         * @ORM\OneToOne(targetEntity="MSSQL\Entity\Test")
         * @ORM\JoinColumn(name="id_mssql", referencedColumnName="id_mssql")
         */
        private $mssql;

I would like to make a join between these two connections :( 我想在这两个连接之间进行连接:(

Short answer you are probably looking for is, unfortunately, no . 不幸的是,您可能正在寻找的简短答案是“ 否”

There are ways for two separate connections (mysql and mssql in your case) to share data and this post might lead you down the right track if you are feeling extra adventurous. 有两种方式可以共享数据(在您的情况下为mysql和mssql),并且如果您觉得冒险, 这篇文章可能会使您误入歧途。

But I would recommend just selecting your data from each connection separately and then manipulating it in php by matching common keys from each result to essentially emulate a join. 但我建议您仅从每个连接中分别选择您的数据,然后通过匹配每个结果中的公用键在php对其进行操作以实质上模拟联接。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM