没有实体的 Symfony CollectionType
Symfony CollectionType with no entity
我有一个:
class Q&A
{
private $question
private $answer
}
我需要 Q&A
的集合 (CollectionType
),但我的模型中没有反面实体(Q&A
实体没有 ManyToOne 与任何其他实体的关系)。
问题
我在这里有什么选择?
我还有:
class Page
{
/**
* @ORM\OneToMany(targetEntity="Content")
*/
private $contents;
}
我考虑过将 Page
class 设为 abstract
并为每个页面类型创建一个单独的实体,每个都继承自 Page
。
那样我可以
class Q&APage
{
/**
* @ORM\OneToMany(targetEntity="Q&A")
*/
private $q&as;
}
但这不是一个大网站,我有大约 5 种不同的页面类型,我觉得为每种页面类型设置不同的实体有点过分了。
首先这与Symfony无关。这是教义的事情。顺便说一句,你在这里没有矫枉过正,因为你的 模型 应该有意义并且是合理的,让你开发你的代码库。
程序员在开发代码库时设计了一个格式错误的模型并遇到麻烦的情况有很多。
毕竟,你怎么知道的:
That is not a big website
?今天的许多大网站,从一开始就没有这么大。因此,作为开发人员尝试而不是轻视 Model Design.
是一个很好的做法
提议的设计看起来不错,老实说,您对模型所需的数据结构有很好的理解。
您需要:
class QuestionAndAnswer
{
/**
* @ORM\ManyToOne(targetEntity="QuestionAndAnswerPage", inversedBy="questionAndAnswers")
*/
private $questionAndAnswerPage;
}
还有一个:
class QuestionAndAnswerPage
{
/**
* @ORM\OneToMany(targetEntity="QuestionAndAnswer", mappedBy="questionAndAnswerPage")
*/
private $questionAndAnswers;
}
提示:尽量始终使用完整的英文单词和短语,因为这是面向对象世界中的最佳做法。请记住,您的用户不需要阅读它们。它们是为了让您以后不会陷入格式错误的短语中。
我有一个:
class Q&A
{
private $question
private $answer
}
我需要 Q&A
的集合 (CollectionType
),但我的模型中没有反面实体(Q&A
实体没有 ManyToOne 与任何其他实体的关系)。
问题
我在这里有什么选择?
我还有:
class Page
{
/**
* @ORM\OneToMany(targetEntity="Content")
*/
private $contents;
}
我考虑过将 Page
class 设为 abstract
并为每个页面类型创建一个单独的实体,每个都继承自 Page
。
那样我可以
class Q&APage
{
/**
* @ORM\OneToMany(targetEntity="Q&A")
*/
private $q&as;
}
但这不是一个大网站,我有大约 5 种不同的页面类型,我觉得为每种页面类型设置不同的实体有点过分了。
首先这与Symfony无关。这是教义的事情。顺便说一句,你在这里没有矫枉过正,因为你的 模型 应该有意义并且是合理的,让你开发你的代码库。
程序员在开发代码库时设计了一个格式错误的模型并遇到麻烦的情况有很多。
毕竟,你怎么知道的:
That is not a big website
?今天的许多大网站,从一开始就没有这么大。因此,作为开发人员尝试而不是轻视 Model Design.
是一个很好的做法提议的设计看起来不错,老实说,您对模型所需的数据结构有很好的理解。
您需要:
class QuestionAndAnswer
{
/**
* @ORM\ManyToOne(targetEntity="QuestionAndAnswerPage", inversedBy="questionAndAnswers")
*/
private $questionAndAnswerPage;
}
还有一个:
class QuestionAndAnswerPage
{
/**
* @ORM\OneToMany(targetEntity="QuestionAndAnswer", mappedBy="questionAndAnswerPage")
*/
private $questionAndAnswers;
}
提示:尽量始终使用完整的英文单词和短语,因为这是面向对象世界中的最佳做法。请记住,您的用户不需要阅读它们。它们是为了让您以后不会陷入格式错误的短语中。