Редактировать:
Я подготовил tar.gz, который после распаковки и после запуска ./bin/vendors install не может загрузить приборы через php scripts/createAll.php
.В tar.gz есть 2 пакета, использующих 2 разных соединения, каждое со своей базой данных.
Я думаю, что Symfony2 не может правильно управлять ими.Если вы посмотрите на scripts / createAll.php, то увидите, как Symfony не может загрузить оба прибора, но если вы удалите случайный прибор (это не имеет значения, Var_.php или Foo_.php, все работает нормально, что мне кажется, чтоSymfony не может правильно управлять объектами.)
ССЫЛКА: 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"
Проблема заключается в том, что при использовании отношений между сущностями в разных каталогах я получаю следующую ошибку, вызванную vendor/doctrine/lib/Doctrine/ORM/Mapping/MappingException.php at line 142
Класс FRJPC \ SalleUrlFormacionsBundle \ Entity \EspecialitatContingut не является допустимым объектом или сопоставленным суперклассом
Проблема заключается в том, что иногда "\" перед именем поставщика нарушает пространство имен.Это действительно странно.
Вот как ii связывают сущности между собой:
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: Обе сущности работают как шарм, когда находятся в одном комплекте и в одном каталоге.