qui*_*150 9 mapping entity doctrine symfony
我正在使用Symfony2,当我尝试生成架构($ php app/console doctrine:generate:schema)时出现错误..
[Doctrine\ORM\Mapping\MappingException]
No mapping file found named 'xxx.UserBundle.Entity.User.php' for class 'xxx\UserBundle\Entity\User'.
我在proyect中只有2个Bundles:
我使用以下代码将FileBundle与UserBundle连接:
/**
* @ORM\ManyToOne(targetEntity="xxx\UserBundle\Entity\User")
**/
protected $user;
文件的标题是这样的:
namespace xx\UserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
**/
class User
{ ###...###}
FileBundle非常相似..谢谢!
ila*_*nco 26
您正在混合Doctrine映射格式,您在Resources/config/doctrine中有注释和至少一个XML文件
从symfony文档:
"A bundle can accept only one metadata definition format. For example,
it's not possible to mix YAML metadata definitions with annotated PHP
entity class definitions."
Run Code Online (Sandbox Code Playgroud)
所以解决方案是:
您不能在给定的包中混合使用不同的Doctrine映射格式.因此要么为所有实体使用注释,要么为所有实体使用XML.
对我来说有点奇怪的是,您使用 PHPDriver 进行 ORM 而不是 AnnotationDriver,因为类中的数据库信息位于注释中。
无论如何,如果php app/console doctrine:mapping:info命令只给你 1 个实体,这意味着你的另一个包含 User 类的包没有加载到 app/AppKernel.php 文件中。通过添加行加载您的 UserBundle
new xxx\UserBundle\xxxUserBundle(),
Run Code Online (Sandbox Code Playgroud)
到函数$bundles中的数组registerBundles()。之后,这个函数应该看起来像这样:
public function registerBundles()
{
$bundles = array(
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(),
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
new Symfony\Bundle\DoctrineBundle\DoctrineBundle(),
new Symfony\Bundle\AsseticBundle\AsseticBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(),
new xx\FileBundle\xxFileBundle(),
new xxx\UserBundle\xxxUserBundle(),
);
if (in_array($this->getEnvironment(), array('dev', 'test'))) {
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
}
return $bundles;
}
Run Code Online (Sandbox Code Playgroud)
当然,请将“xx”和“xxx”更改为您的真实姓名。
希望这可以帮助。
我想不出发生这种情况的原因,但我会在这里迈出一步。
尝试编辑您的config.yml. doctrine部分应如下所示:
doctrine:
dbal:
default_connection: my_connection_name
connections:
fmefb:
host: %database_host%
dbname: %database_name%
user: %database_user%
password: %database_password%
driver: %database_driver%
port: %database_port%
charset: UTF8
orm:
default_entity_manager: my_entity_manager
entity_managers:
my_entity_manager:
connection: my_connection_name
mappings:
CompanyNameSiteBundle: ~
CompanyNameAdminBundle: ~
CompanyNameSomethingElse: ~
Run Code Online (Sandbox Code Playgroud)
请注意mappings底部的列表。所有“链接”的捆绑包都包含在这里。
希望这可以帮助....
| 归档时间: |
|
| 查看次数: |
24481 次 |
| 最近记录: |