Symfony AppBundle';s的最佳实践和进一步发展的方法

Symfony AppBundle';s的最佳实践和进一步发展的方法,symfony,php,doctrine-orm,entity,Symfony,Php,Doctrine Orm,Entity,根据的文档网站,他们解释了如何处理应用程序逻辑和最佳实践。我在本文档中缺少的一件事是存储和使用实体的方法。有一种方法涵盖了注释在实体中的使用,但我们现在都使用这种方法,我希望您也这样做 到目前为止,我的项目有以下实体: +------------------------------------------------------------------------+ | Filename | Location | Typ

根据的文档网站,他们解释了如何处理应用程序逻辑和最佳实践。我在本文档中缺少的一件事是存储和使用实体的方法。有一种方法涵盖了注释在实体中的使用,但我们现在都使用这种方法,我希望您也这样做

到目前为止,我的项目有以下实体:

+------------------------------------------------------------------------+
| Filename              | Location                          | Type       |
+------------------------------------------------------------------------+
| Account.php           | src/AppBundle/Entity              | Entity     |
| AccountRepository.php | src/AppBundle/Entity/Repositories | Repository |
| News.php              | src/AppBundle/Entity              | Entity     |
| NewsRepository.php    | src/AppBundle/Entity/Repositories | Repository |
+------------------------------------------------------------------------+
现在我在创建Forum.php实体时遇到问题,因为我需要4个数据库表:

  • 论坛(组)
  • 论坛类别
  • 论坛主题
  • 论坛帖子
我是否需要在
src/AppBundle/Entity
中的一个名为Forum.php的文件中创建4个实体,或者我是否需要做其他事情来归档存储和使用这些实体的最佳实践方式。例如,
ForumSections.php
和其他三个文件占用了大量空间,看起来很难看


感谢您的阅读,并提前感谢您抽出时间留下回复。如果我的问题中有任何拼写错误,我很抱歉。

是的,您需要为每个实体创建一个新文件。对于整个框架,您必须为每个文件只编写一个类,并且文件名必须与文件中的类名匹配(扩展名除外)。有这么大的空间是什么意思?2015年是计算机可以处理TB级数据的一年:-)

是的,您需要为每个实体创建一个新文件。对于整个框架,您必须为每个文件只编写一个类,并且文件名必须与文件中的类名匹配(扩展名除外)。有这么大的空间是什么意思?2015年,计算机可以处理TB级数据:-)

如果您采用与现有实体相同的策略,则需要在以下文件中定义四个实体:

src/AppBundle/Entity/ForumCategory.php
src/AppBundle/Entity/ForumPost.php
src/AppBundle/Entity/ForumSection.php
src/AppBundle/Entity/ForumTopic.php
然后,每个实体的名称空间将是
名称空间AppBundle\entity

但是,当您有多个相关实体时,最好在
Entity/
目录中创建一个子目录。因此,您可以执行以下操作:

src/AppBundle/Entity/Forum/Category.php
src/AppBundle/Entity/Forum/Post.php
src/AppBundle/Entity/Forum/Section.php
src/AppBundle/Entity/Forum/Topic.php

使用此布局不需要更改代码。唯一需要更新的是这些实体的名称空间:
namespace-AppBundle\Entity\Forum

如果遵循与现有实体相同的策略,则需要在以下文件中定义四个实体:

src/AppBundle/Entity/ForumCategory.php
src/AppBundle/Entity/ForumPost.php
src/AppBundle/Entity/ForumSection.php
src/AppBundle/Entity/ForumTopic.php
然后,每个实体的名称空间将是
名称空间AppBundle\entity

但是,当您有多个相关实体时,最好在
Entity/
目录中创建一个子目录。因此,您可以执行以下操作:

src/AppBundle/Entity/Forum/Category.php
src/AppBundle/Entity/Forum/Post.php
src/AppBundle/Entity/Forum/Section.php
src/AppBundle/Entity/Forum/Topic.php

使用此布局不需要更改代码。唯一需要更新的是这些实体的名称空间:
namespace-AppBundle\Entity\Forum

这是一个很好的解决方案。如何调用控制器中的实体?与
$this->getdoctor()->getRepository('AppBundle:News')
相同,但与
$this->getdoctor()->getRepository('AppBundle:Forum:Category')
不同,您是对的。简短的语法不能与我先前向您提出的第二种策略一起使用。您应该使用->getRepository('AppBundle\Entity\Forum\Category')`。所以我觉得还是使用第一种策略比较好,我自己也经历过。您需要修改整个名称空间才能在控制器中获取实体。最好的方法是坚持你在答案中提供的第一个解决方案。这是一个很好的解决方案。如何调用控制器中的实体?与
$this->getdoctor()->getRepository('AppBundle:News')
相同,但与
$this->getdoctor()->getRepository('AppBundle:Forum:Category')
不同,您是对的。简短的语法不能与我先前向您提出的第二种策略一起使用。您应该使用->getRepository('AppBundle\Entity\Forum\Category')`。所以我觉得还是使用第一种策略比较好,我自己也经历过。您需要修改整个名称空间才能在控制器中获取实体。最好的办法是坚持你在答案中提供的第一个解决方案。