繁体   English   中英

symfony2中的实体和数据库设计

[英]Entities & database design in symfony2

我正在寻找有关数据库设计的一些建议。

我正在symfony2平台上构建一个幻灯片应用程序,并且我有四种不同类型的幻灯片容器(公司,地理区域,属性和单个监视器)。 这是为了组织内容并沿线继承内容(监视器位于属性中,属性是地理区域的一部分等)。

现在,在平面PHP上,我将只使用两个表“容器”和“内容”,并在容器表中放置一个类型字段,以定义所讨论的容器是否是地理区域,属性等,并仅链接每个内容用FK片(即滑片)到适当的容器。

现在,了解symfony2的实体系统,似乎我可以通过将不同的容器类型定义为单独的实体来获得很多继承权,从而能够获取例如地理区域并自动返回其所有子项对象(所有属性,以及属于该属性的所有监视器)运行中。 但是,我确实希望能够在不同的容器和不同的容器类型之间切换内容块的“所属”。 我认为,采用上述方法会有些麻烦,如果内容必须具有“属于”四种不同完整类型中的任何一种的能力,那么很可能会出现内容关系(FK)的问题?

在symfony2世界中经验丰富的人也许可以启发我前进到这里的最明智的途径?

在我们的项目中,我们使用Propel 1.6PropelBundle

它的语法对开发人员非常友好。 Propel一大优势是表之间的“伪”关系。 在您的架构中,只需定义skipSql = true标志,就可以省略FK的生成,但是只需通过定义的伪关系就可以获取另一个对象。

在您的情况下,结果将如下所示:

$containers = ContainerQuery::create()->findByXXX('xxx');
$containers->getFirst()->getContents(); // Will return all joined content for the first container

在填充具有相关对象的对象时-您获得了使用反向关系的绝佳机会:

$contents = $container->getContents();
$container = $contents->getContainer();

只需提出评论,我将根据您的需要扩展我的回答;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM