我准备这一次解压缩并运行./bin/vendors后安装一个tar.gz无法通过PHP脚本/ createAll加载装置。 PHP。在tar.gz中,有两个捆绑使用两个不同的连接,每个人都有自己的数据库。
我认为Symfony2无法正确管理它们。如果你看看scripts/createAll.php将会看到symfony如何加载两个灯具,但是如果你删除了一个随机灯具(这并不重要Var_.php或Foo_.php一切运行良好,这在我看来symfony中未能正确地管理实体)
LINK:http://www.2shared.com/file/2u4GhFVX/SymfonyTestCasetar.html
我想告诉Symfony2
使用不同entity managers
针对不同Bundle directories
所以我config.yml样子:
orm:
auto_generate_proxy_classes: %kernel.debug%
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
myVendorURLCoreBundle: ~
myVendormyBundleBundle: ~
myVendormyBundleFooBundle:
prefix: "myVendor\myBundleFooBundle\Entity"
type: annotation
is_bundle: true
dir: "/Entity"
formacions:
connection: formacions
mappings:
myVendormyBundleFooBarBundle:
prefix: "myVendor\myBundleFooBarBundle\View"
type: annotation
is_bundle: false
dir: "%kernel.root_dir%/../src/myVendor/myBundleFooBarBundle/View"
的问题是当使用不同di中的实体之间的关系时累托石,我得到以下因素导致错误的vendor/doctrine/lib/Doctrine/ORM/Mapping/MappingException.php at line 142
Class FRJPC\SalleUrlFormacionsBundle\Entity\EspecialitatContingut is not a valid entity or mapped super class
的probem是,有时“\”供应商名称之前中断的命名空间。这真的很奇怪。
这是我如何我彼此之间链接的实体:
namespace myVendor\myBundleFooBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity(repositoryClass="myVendor\myBundleFooBundle\Repository\ARepository") * @ORM\ChangeTrackingPolicy("DEFERRED_EXPLICIT") * @ORM\Table(name="a") */ class A { /** * @ORM\Id * @ORM\Column(type="integer", length="4") * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @ORM\ManyToOne(targetEntity="\myVendor\myBundleFooBarBundle\Entity\B", inversedBy="a", cascade={"persist"}) * @ORM\JoinColumn(name="FooBar", nullable=true, referencedColumnName="FooBar", onDelete="CASCADE") */ private $fooBar; }
二实体:
namespace myVendor\myBundleFooBarBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity(repositoryClass="myVendor\myBundleFooBarBundle\Repository\ARepository") * @ORM\ChangeTrackingPolicy("DEFERRED_EXPLICIT") * @ORM\Table(name="a") */ class B { /** * @ORM\Id * @ORM\Column(type="integer", length="4") * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** @ORM\OneToMany(targetEntity="\myVendor\myBundleFooBundle\Entity\EspecialitatContingut", mappedBy="fooBar") */ private $a; }
没有任何一个对我应该怎么每个实体链接线索?
PD:两个实体在相同的包和相同的目录中时都像魅力一样工作。
非常感谢您的回答。据我了解,在confyg.yml中,我定义了不同的实体管理器,这些实体管理器由不同的bundle使用,并且只有在关系中使用FQDN时才相互了解,这种概念是否错误?我要上传一个测试案例,所以如果你有时间的话,你可以看看它。非常感谢您的时间,我真的很关心如何解决这个问题。 – user846226 2012-02-18 09:09:37
你可能想看看这个:http://stackoverflow.com/q/9311485/1146363命令:app/console doctrine:mapping:info --em EntityManagerName可以给你一些关于到底给定实体管理器可以看到。 – Cerad 2012-02-18 17:04:57
非常感谢您的回答。我确实知道pp/console主义:mapping:info --em ='foo'命令,但不知道它如何提供帮助。我认为symfony在管理多个连接时存在一些问题,因为实体很好,也有固定装置,并且只有一个固定装置存在时它们可以毫无问题地加载。 – user846226 2012-02-19 13:17:14