Symfony4 - Doctrine Cross Database加入配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Symfony4 - Doctrine Cross Database加入配置相关的知识,希望对你有一定的参考价值。

我需要跨数据库关系,我有qazxsw poi但由于映射问题我无法得到我想要的东西。这是我的情况

read about this

我的学说.yaml

namespace AppEntityUtility;

use DoctrineORMMapping as ORM;
use AppEntityCrmUser;

/**
 * Description of Test
 *
 * @ORMTable(name="fgel_utility.fgel_test")
 * @ORMEntity(repositoryClass="AppRepositoryUtilityTestRepository")
 */
class Test
{
     /**
     * @ORMColumn(name="id", type="integer")
     * @ORMId
     * @ORMGeneratedValue(strategy="AUTO")
     */
    protected $id;


    /**
     * 
     * @var User
     * 
     * @ORMManyToOne(targetEntity="AppEntityCrmUser")
     * @ORMJoinColumn(name="user_cod", referencedColumnName="AUCUT") 
     */
    protected $user = null;

    public function getId()
    {
        return $this->id;
    }

    public function getUser(): User
    {
        return $this->user;
    }

    public function setId($id)
    {
        $this->id = $id;
        return $this;
    }

    public function setUser(User $user)
    {
        $this->user = $utente;
        return $this;
    }
}


namespace AppEntityCrm;

use DoctrineORMMapping as ORM;
/**
 * 
 * @ORMTable(name="crm.USER")
 * @ORMEntity(repositoryClass="AppRepositoryFintelGasDatiAnuteRepository")
 */
class User
{

    /**
     * 
     * @ORMId
     * @ORMColumn(name="AUCUT", type="integer", nullable=false)
     */
    protected $codiceCliente;

    # SOME CODE
}

所以他们共享相同的连接(但不同的em)。连接的用户具有读/写两个数据库的权限(但只能将模式更改为fgel_utility数据库。两个数据库都存储在SQL Server 2008中。当我试着执行时

doctrine:
    orm:
        default_entity_manager: default
        entity_managers:
            #################################
            # Update schema only with this em
            #################################
            default:
                connection: mssql_1
                mappings:
                    Utility:
                        type:     "annotation"    
                        # The directory for entity (relative to bundle path)
                        dir:      '%kernel.project_dir%/src/Entity/Utility'   
                        prefix:   'AppEntityUtility'
                        alias: Utility
            mssql_crm:
                connection: mssql_1
                mappings:
                    Crm:
                        type: "annotation" 
                        # The directory for entity (relative to bundle path)
                        dir: '%kernel.project_dir%/src/Entity/Crm'   
                        prefix: 'AppEntityCrm'
                        alias: Crm

我收到这个错误

在链配置的命名空间App Entity Utility,FOS UserBundle Model中找不到类“App Entity Crm User”

答案

根据这个php bin/console doctrine:schema:update --dump-sql 交叉数据库连接不同的实体管理器(相同的连接)不受支持。

以上是关于Symfony4 - Doctrine Cross Database加入配置的主要内容,如果未能解决你的问题,请参考以下文章

Symfony4 UnitTest 中的 Doctrine2 orderBy

Symfony4 数据库连接

Symfony 4 + Sonata + Sonata Doctrine ORM Admin Bundle:错误:没有要处理的元数据类

Symfony 4:调用 getter 后,Doctrine2 LAZY Fetch Collection 仍然为空

无法在 Symfony 4.1 项目中安装 Doctrine Migrations V2

在控制器上捕获 Doctrine 异常