Php 没有实体的Symfony CollectionType
我有一个:Php 没有实体的Symfony CollectionType,php,forms,symfony,doctrine,entity,Php,Forms,Symfony,Doctrine,Entity,我有一个: class Q&A { private $question private $answer } 我需要一个Q&as的集合(CollectionType),但我的模型中没有反向边实体(Q&a实体与任何其他实体没有manytone关系) 问题 我的选择是什么 我还有: class Page { /** * @ORM\OneToMany(targetEntity="Content") */ private $contents
class Q&A
{
private $question
private $answer
}
我需要一个Q&a
s的集合(CollectionType
),但我的模型中没有反向边实体(Q&a
实体与任何其他实体没有manytone关系)
问题
我的选择是什么
我还有:
class Page
{
/**
* @ORM\OneToMany(targetEntity="Content")
*/
private $contents;
}
我考虑将页面
类设置为抽象
,并为每个页面类型创建一个单独的实体,每个实体都继承自页面
那样我就可以
class Q&APage
{
/**
* @ORM\OneToMany(targetEntity="Q&A")
*/
private $q&as;
}
但这不是一个大网站,我有5种不同的页面类型,我觉得对于每种页面类型都有一个不同的实体太过分了。首先,这与Symfony无关。这是一种教条。顺便说一句,您在这里没有过多的技巧,因为您的模型应该是合理的,可以让您开发代码库 在许多情况下,程序员在开发代码库的过程中设计了一个格式错误的模型,并遇到了麻烦 在这一切之后,你怎么知道: 那不是一个大网站 ??今天的许多大型网站,从一开始就没有这么大。因此,作为一名开发人员,您最好尝试一下,不要轻视模型设计 建议的设计看起来不错,老实说,您对模型所需的数据结构有很好的理解 您需要有一个:
class QuestionAndAnswer
{
/**
* @ORM\ManyToOne(targetEntity="QuestionAndAnswerPage", inversedBy="questionAndAnswers")
*/
private $questionAndAnswerPage;
}
以及:
class QuestionAndAnswerPage
{
/**
* @ORM\OneToMany(targetEntity="QuestionAndAnswer", mappedBy="questionAndAnswerPage")
*/
private $questionAndAnswers;
}
提示:尽量使用完整的英语单词和短语,因为这是面向对象世界的最佳实践。请记住,您的用户不需要阅读它们。它们让您在将来不会陷入格式错误的短语中。创建一个模型类(例如
AppBundle\model\QACollection
),该类可以容纳AppBundle\Entity\QA
数组,并将表单与之关联。谢谢,我以前真的应该想到这一点。它现在工作得很好!非常感谢你编辑我的原创文章和这个答案!很抱歉,我没有完成之前的评论,现在无法编辑。我说“这不是一个大网站”的意思是,它永远不会变大,它实际上是一个非常小的本地工作室展示网站,已经有10年了,我只是在刷新它。很高兴知道我的想法很好。在你回答之前,我同意了ccKep的建议,效果很好,你还认为我需要改用这种模型设计吗?同时也感谢您提供的使用完整单词的提示!一个好的模型设计的标准,在互联网上已经有了,但是在你的模型中加入什么的整个想法来自你要解决的问题领域。实体及其名称应该确实存在。例如,如果我是你,我不会选择名为Content
的实体,因为这没有多大意义。几乎一切都很满足。在模型设计过程中,应该更具体地使用实体。