gpt4 book ai didi

php - 多个数据库、一种学说连接和一个不服从的 bundle

转载 作者:行者123 更新时间:2023-11-29 11:36:35 25 4
gpt4 key购买 nike

我在使用 Doctrine ORM 时遇到的奇怪问题

我有各种 bundle ,它们都包含自己的一组实体,这些实体都管理自己的数据库。它们都在同一默认连接下进行管理。

# Doctrine Configuration
doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
user: "%database_user%"
password: "%database_password%"
dbname: "%database_dbname%"
charset: UTF8
orm:
auto_generate_proxy_classes: "%kernel.debug%"
auto_mapping: true

由于所有托管数据库共享相同的连接,因此 dbname 参数有意留空,并且针对适当的数据库和表由我在 @Table< 中指定 注释。

我的问题是三个 bundle 中只有两个可以工作。

为了简洁起见, bundle 是:AppBundle、BlogBu​​ndle、SalesBundle其中每一个都在 {BundleName}\Entity 下管理自己的一组实体。设置非常简单,我将共享每个包中实体的 header

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* Account
*
* @ORM\Table(name="siteengine.account", options={"comment":"Governing User Account Storage"})
* @ORM\Entity
*/
class Account
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

那个有效。

<?php

namespace SalesBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* Client
*
* @ORM\Entity(repositoryClass="SalesBundle\Repository\ClientRepository")
* @ORM\Table(name="sales.Client", options={"comment":"Main/Primary Client Storage for Sales"})
*/
class Client
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

那个也可以。

<?php

namespace BlogBundle\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use AppBundle\Entity\Account;

/**
* @ORM\Entity(repositoryClass="BlogBundle\Repository\PostRepository")
* @ORM\Table(name="blog.posts", options={"comment":"Primary Blog Post Storage"})
*/
class Post
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

这个没有。

我所说的“不”是指教义命令。我可以在任何地方使用博客实体,并取回我想要和需要的数据,但我必须自己为博客实体手动创建表和架构才能进行测试。无论出于何种原因,应用程序和销售 bundle 都工作正常,我对它们所做的任何更改都会反射(reflect)在 bin/console 学说:schema:update --dump-sql 输出中,但从来没有,有关博客包的任何内容是否都会反射(reflect)在同一输出中。

同样,在同一连接下,三个 bundle 中的两个可以使用架构工具,但所有三个 bundle 都可以在执行 DQL 命令时工作。

我感觉我失去了理智

最佳答案

我找到了解决方案。我不喜欢这个结果。

经过一番尝试后,我注意到如果我将默认连接 dbname 参数设置为任何一个数据库,并运行命令,它确实会同步。包括博客数据库。

然后我偶然发现了一个 github project that is attempting to do exactly the same thing as me ,文档也让我感到震惊,因为它证实了一个怀疑

  • Create the two test databases 'symfonydemo_post' and 'symfonydemo_user';
  • You can build the databases automatically, simply set the db name in parameters.yml to 'symfonydemo_post' and run 'php app/console doctrine:schema:update' to create the tables, change the db name to 'symfonydemo_user' and repeat the process to build the tables for the User entity.

Whelp..我想这很酷,你可以对 cli 有一点控制.............................. ........................

关于php - 多个数据库、一种学说连接和一个不服从的 bundle ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36484181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com