Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 没有实体的Symfony CollectionType_Php_Forms_Symfony_Doctrine_Entity - Fatal编程技术网

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
的实体,因为这没有多大意义。几乎一切都很满足。在模型设计过程中,应该更具体地使用实体。