【发布时间】:2014-11-06 14:26:56
【问题描述】:
我尝试使用 Symfony 2 开发一个网站。 我想使用 2 个数据库。一个带有一般数据(DB_DATA),另一个带有我的应用程序数据(DB_APP)。 我制作了两个包“MyCompany\DataBundle”和“MyCompany\AppBundle”。
在“MyCompany\DataBundle”中,我声明了一个实体“Customer”,它指的是我公司的客户。 在“MyCompany\AppBundle”中有一个实体“Account”被应用程序使用并且必须引用客户。
现在它们看起来像这样:
\src\MyCompany\DataBundle\Entity\Customer.php
<?php
namespace MyCompany\DataBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Customer
*
* @ORM\Table(name="customer")
* @ORM\Entity
*/
class Customer
{
/**
* @var integer
*
* @ORM\Column(name="ID", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="LASTNAME", type="string", length=255, nullable=false)
*/
private $lastName;
/**
* @var string
*
* @ORM\Column(name="FIRSTNAME", type="string", length=255, nullable=false)
*/
private $firstName;
...
}
\src\MyCompany\AppBundle\Entity\Account.php
<?php
namespace MyCompany\AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Account
*
* @ORM\Table(name="account")
* @ORM\Entity
*/
class Account
{
/**
* @var integer
*
* @ORM\Column(name="ID", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\OneToOne(targetEntity="\MyCompany\DataBundle\Entity\Customer")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="CUSTOMER_ID", referencedColumnName="ID")
* })
*/
private $customer;
}
\app\config.yml
doctrine:
dbal:
default_connection: default
connections:
default:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
appdb:
driver: "%database_driver2%"
host: "%database_host2%"
port: "%database_port2%"
dbname: "%database_name2%"
user: "%database_user2%"
password: "%database_password2%"
charset: UTF8
orm:
auto_generate_proxy_classes: %kernel.debug%
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
AppBundle:
type: annotation
mapping: true
dir: "%kernel.root_dir%/../src/MyCompany/AppBundle/Entity/"
prefix: MyCompany\AppBundle\Entity\
is_bundle: false
alias: APP
app:
connection: appdb
mappings:
DataBundle:
type: annotation
mapping: true
dir: "%kernel.root_dir%/../src/MyCompany/DataBundle/Entity/"
prefix: MyCompany\DataBundle\Entity\
is_bundle: false
alias: DATA
每次我尝试更新架构时,都会收到此错误:
[Doctrine\Common\Persistence\Mapping\MappingException]
The class 'MyCompany\DataBundle\Entity\Customer' was not found in the chain configured namespaces MyCompany\AppBundle\Entity
【问题讨论】: