【问题标题】:Cross Database Joins Doctrine跨数据库连接原则
【发布时间】:2015-07-11 01:58:58
【问题描述】:

我的 Doctrine 中有 2 个与 ZF2 的连接,但我需要加入 twoo 数据库。最大的问题是:是否可以对位于不同数据库和连接中的两个表执行连接?

'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',
                ),
            ),
        ),

实体 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;

我想在这两个连接之间建立一个连接:(

【问题讨论】:

    标签: php mysql orm doctrine-orm zend-framework2


    【解决方案1】:

    不幸的是,您可能正在寻找的简短答案是

    两个单独的连接(在您的情况下为 mysql 和 mssql)有多种方法可以共享数据,如果您喜欢冒险,this post 可能会引导您走上正确的道路。

    但我建议仅从每个连接中分别选择您的数据,然后通过匹配每个结果中的公共键来在 php 中对其进行操作,从而基本上模拟连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-03
      • 2010-12-13
      • 2011-09-11
      • 2011-09-19
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多