如何与相关实体独立设置Symfony2bundle



我正试图找到一种智能的方法来实现我的捆绑包,并满足以下要求:

  1. 我有一个名为LogicABundle的逻辑捆绑包
  2. 我有一个名为AppBundle
  3. 我有另一个带有逻辑LogicBBundle和一些实体的Bundle与LogicABundle实体相关

我知道希望能够从这个设置中"部署"两个应用程序:

  1. 应用程序一使用LogicABundleAppBundle
  2. 第二个使用LogicABundleLogicBBundleAppBundle

问题是,对于第二个应用程序,我需要将一些实体从LogicABundle关联到LogicBBundle,这会导致第一个"部署"选项停止,如果我在LogicABundle中只有一个实体指向LogicBBundle

是否有智能解决方案可以独立部署这两个不同的应用程序?以下是一个示例,以便更容易理解:命名空间My\LogicABundle\Entity\Game;

use DoctrineORMMapping as ORM;
/**
 * MyLogicABundleEntityGame
 *
 * @ORMEntity
 * 
 */
class Game
{
    /**
     * @var integer $id
     *
     * @ORMColumn(name="id", type="integer")
     * @ORMId
     * @ORMGeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * @var string $title
     *
     * @ORMColumn(name="title", type="string")
     */
    private $title;
    /**
     *
     * @var Message
     * @ORMManyToOne(targetEntity="MyLogicBBundleEntityMessage", inversedBy="games")
     * @ORMJoinColumn(name="messag_id", referencedColumnName="id", nullable=false)
     * @AssertNotNull()
     */
    private $message; 
}

我希望能够在我的独立应用程序中只使用LogicABundle中的Game类,而在我的第二个应用程序中,我需要具有消息关系的游戏实体。

我不确定,但我也有同样的问题,我只是发现:http://symfony.com/en/doc/current/cookbook/doctrine/resolve_target_entity.html

希望不要迟到;)

如果您正在使用Git(或SVN或其他源countrol工具),我建议您创建两个独立的Symfony2应用程序(每个应用程序都在其存储库中)。此外,每个捆绑包都有自己的存储库,我会使用Composer正确设置依赖项,然后作为供应商安装捆绑包(LogicABundle、LogicBBundle、AppBundle)。

更新:由于不同的bundle需要不同的实体,一种方法是在bundle中指定只需要基本实体的基本实体,并用其他关系扩展另一个bundle中的实体(请参阅条令继承映射)。

例如,在LogicABundle中定义EntityA,在LogicBBundle中指定EntityA2,其中EntityA2扩展EntityA并向实体添加其他关系。

更新:由于您没有提供为什么需要这样做的额外信息,我现在只能猜测,但一个额外的想法是在两个捆绑包中简单地使用相同的实体。LogicABundle中的逻辑将简单地忽略附加关系。我认为这是大多数开发人员在您的情况下会做的事情。

例如,考虑提供常见功能的捆绑包,如FOSUserBundle。捆绑包定义了一些模型,但并不是每个使用FOSUserBundle的应用程序都必须使用实体的每个字段(在我目前正在开发的应用程序中,我完全忽略了FOSUserBundle的组功能)。

如果可以使用公共实体类并忽略这些附加关系,请提供进一步的信息。

相关内容

  • 没有找到相关文章

最新更新