2015-07-11 75 views
0

我在ZF2的学说中有2个连接,但我需要在两个数据库中加入连接。最大的问题是:是否可以在两个不同数据库和连接的表上执行连接?交叉数据库加入原则

'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; 

我想就这两个连接:(

回答

1

简短的回答你可能寻找,不幸的是,没有之间联接。

有两种不同的连接方式(在你的情况下为mysql和mssql)共享数据和this post可能会让你走上正确的轨道,如果你感到额外的冒险。

但我会建议只是分别从每个连接中选择数据,然后在php中通过匹配来自每个结果的公共密钥来实质模拟连接来操纵它。