- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
编辑 2018-05-22:没有答案完全固定的问题 - 无法再复制问题,因为不再具有访问权限。不删除基于 this meta discussion
请不要花时间/精力来创建答案
@Wilt 的回答中的讨论使我了解了我现在对使用鉴别器的了解,这可能对 future 的提问者有所帮助。就我而言,它有所帮助,但没有提供答案。
我遇到了一些复杂的问题,即从客户端收到的数据 hydration 不正确。我已经尝试解决这个问题近一个星期了,所以我想问问你们。
我们有这个应用程序可以为学生创建作业。作业可能包含问题、文本项目、媒体项目等。问题在于问题和相关的答案。
场景
任务
Question
实际上是
GridElements
实体。也可能是
Text
或
Image
,这是基于属性
type = question
这是一个
Discriminator
.
$form->isValid()
期间完成的.
QuestionSheet 1
包含第一个
Question
为
QuestionSheet 2
还有那个
Question
有第一个
Answer
来自第三个
Question
第二个
QuestionSheet
.
Answers
为第一个
QuestionSheet
创建已被丢弃。
Answers
来自第二个
QuestionSheet
已被复制并覆盖了第一个问题表中的答案。本质上,您在上图中看到的内容。
LEFT JOIN
为了也显示所有空数据,这就是剩下的全部。
/**
* @ORM\Entity(repositoryClass="Wms\Admin\Assignment\Repository\AssignmentRepository" )
* @ORM\HasLifecycleCallbacks
* @ORM\Table(name="ass_assignment")
* @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false)
*/
class Assignment extends SeoUrl
{
//Traits and properties
/**
* @ORM\OneToMany(targetEntity="Wms\Admin\Assignment\Entity\QuestionSheet", mappedBy="assignment", cascade={"persist", "remove"}, orphanRemoval=true)
**/
protected $questionSheets;
public function __construct()
{
$this->abstractEntity_entityCategories = new ArrayCollection();
$this->questionSheets = new ArrayCollection();
$this->documents = new ArrayCollection();
}
public function __toString()
{
return (string)$this->id;
}
//More getters/setters
}
/**
* @ORM\Entity(repositoryClass="Wms\Admin\Assignment\Repository\QuestionSheetRepository")
* @ORM\Table(name="ass_questionsheet")
**/
class QuestionSheet extends AbstractEntity
{
/**
* @ORM\ManyToOne(targetEntity="Wms\Admin\Assignment\Entity\Assignment", inversedBy="questionSheets")
* @ORM\JoinColumn(name="assignment_id", referencedColumnName="id", onDelete="CASCADE")
**/
protected $assignment;
/**
* @ORM\OneToOne(targetEntity="Wms\Admin\LayoutGrid\Entity\Grid", cascade={"persist", "remove"})
* @ORM\JoinColumn(name="grid_id", referencedColumnName="id")
**/
protected $grid;
public function __construct()
{
$this->gridElements = new ArrayCollection();
}
//More getters/setters
}
/**
* @ORM\Entity
* @ORM\Table(name="lg_grid")
**/
class Grid extends AbstractEntity
{
/**
* @ORM\OneToMany(targetEntity="Wms\Admin\LayoutGrid\Entity\Element\AbstractElement", mappedBy="grid", cascade={"persist", "remove"}, orphanRemoval=true)
* @ORM\OrderBy({"y" = "ASC", "x" = "ASC"})
*/
protected $gridElements;
public function __construct()
{
$this->gridElements = new ArrayCollection();
}
}
/**
* @ORM\Table(name="lg_grid_element")
* @ORM\Entity
* @ORM\InheritanceType("JOINED")
* @ORM\HasLifecycleCallbacks
**/
class AbstractElement extends AbstractEntity implements GridElementInterface
{
/**
* @ORM\ManyToOne(targetEntity="Wms\Admin\LayoutGrid\Entity\Grid", inversedBy="gridElements")
* @ORM\JoinColumn(name="grid_id", referencedColumnName="id", onDelete="CASCADE")
**/
protected $grid;
public $type = ''; //This is a discriminator
}
/**
* @ORM\Entity
* @ORM\Table(name="lg_grid_question")
**/
class Question extends AbstractElement
{
/**
* @ORM\OneToMany(targetEntity="Wms\Admin\LayoutGrid\Entity\Element\Answer", mappedBy="question", cascade={"persist"})
*/
protected $answers;
public $type = 'question'; //Inherited property, now filled in with discriminator value
public function __construct()
{
$this->answers = new ArrayCollection();
}
}
/**
* @ORM\Entity
* @ORM\Table(name="lg_grid_answer")
**/
class Answer extends AbstractEntity
{
/**
* @ORM\ManyToOne(targetEntity="Wms\Admin\LayoutGrid\Entity\Element\Question", inversedBy="answers", cascade={"persist"})
* @ORM\JoinColumn(name="question_id", referencedColumnName="id", onDelete="CASCADE")
**/
protected $question;
public function __toSting() {
return (string) $this->getId();
}
}
AbstractElement
基于@Wilt 的回答的实体。
/**
* @ORM\Table(name="lg_grid_element")
* @ORM\Entity
* @ORM\InheritanceType("JOINED")
* @ORM\HasLifecycleCallbacks
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap({
* "abstractElement"="AbstractElement",
* "question"="Question",
* //Others
* })
**/
class AbstractElement extends AbstractEntity implements GridElementInterface
{
//Same as above
}
NonUniformCollection
带来了一些问题它处理获取正确的实体。这曾经基于
$type
属性(property)。
$type
实体中具有
* @ORM\DiscriminatorColumn(name="type", type="string")
的属性作为符号,是不允许的。因此,所有使用鉴别器的类也已更新为以下内容。
const ELEMENT_TYPE = 'question'; //Overwritten from AbstractElement
/**
* @return string
*/
public function getType() //Overwritten from AbstractElement
{
return self::ELEMENT_TYPE;
}
最佳答案
我不确定这是否会导致您的问题,但在我看来,您的继承映射设置不正确:
您需要在实体定义中声明鉴别器列 as written in the docs ,它们不应该被设置为属性,学说负责在你的数据库中设置它们:
/**
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="type", type="string")
* @DiscriminatorMap({"element"="AbstractElement", "question"="Question", "text"="TextItem", "media"="MediaItem"})
*/
class AbstractElement extends AbstractEntity implements GridElementInterface
{
//...
}
@MappedSuperClass
?
/**
* @MappedSuperclass
*/
class AbstractEntity
{
//...
}
关于php - 接收到的数据正确时,Doctrine2 hydration 不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38993068/
是否可以在 Next.js 中强制执行仅 SSR 模式并且仅部分 hydration 页面?假设我有这个应用程序: 组件/dynamic.jsx export default () => ( c
我想扩展 ObjectHydrator 以受益于我的 ManyToOne 关系的 hydration 并向实体添加额外的字段。 这是我的 Hydrator :StatisticsDataHydrato
我想知道是否有人可以解释什么是计时指标 Next.js-before-hydration和 Next.js-hydration均值,以及它们与 FCP 的关系。这是针对服务器端渲染并在客户端使用钩子(
我需要以一种形式对多个对象进行 hydration 。这是我使用的: 产品表格 - 我有一个表格,我称之为三个字段集 产品字段集 促销字段集 类别字段集 我有所有必要表格的模型,这是产品模型的示例:
我有可以执行的下一个代码,但是需要太多时间...有什么办法可以使我用createQueryBuilder和update方法来优化它? 这是当前功能: private function getCsv(
来自 React 16 docs关于ReactDOM.Hydrate(), Same as render(), but is used to hydrate a container whose HTM
有几个线程讨论了数据 hydration 的含义。 但我找不到数据 dehydration 的任何定义。 我可以看出三种可能的含义 1) Extracting the current state of
我创建了几个共享 Bundle 的模块化应用程序。其中一个包负责处理所有实体/存储库相关的逻辑(我们称之为 MyBundle)。 这个 MyBundle 包含几个自定义 Hydrator 。鉴于教义配
将Vue异步组件与SSR一起使用会导致页面刷新时重新补水。有没有一种方法可以不导致组件无故更新?来自SSR和客户端的标记是相同的。 https://vuejs.org/v2/guide/compone
我有一个为许多客户端提供数据的持久层。我还有一个规范化的表结构,这意味着值分布在各个表中。我想设计我的持久性服务以确保依赖于它的服务进行最少的往返:如果可能,不超过一次。 鉴于此,我应该关注什么以获得
Angular Universal 用于服务器端渲染。 我有一个功能齐全的 Angular 应用程序。增加FCP。我需要与服务器端渲染相结合。 Angular 是否通用允许动态 SSR。在服务器端加载
编辑 2018-05-22:没有答案完全固定的问题 - 无法再复制问题,因为不再具有访问权限。不删除基于 this meta discussion 请不要花时间/精力来创建答案 @Wilt 的回答中的
我有一个关于重新整理推文文字的问题。任何帮助,将不胜感激。 这是我的数据来源;关于电晕鸣叫: source of data set 我从照片中下载了一个数据集(名为2020年2月1日) 然后,我将过滤
我正在尝试将 hydration 数据插入Google Fit。但是我无法插入数据。 这是我的代码: BuildFitnessClient: private void buildFitnessClie
我有2个实体:User,Article和具有属性的多对多关系,用于描述User与Articles的交互。该属性描述了交互的类型(例如书签...)。 在这种情况下,我需要一个从Article到UserA
我正忙着查看 elasticsearch 以寻找我正在着手的新项目。我目前正在运行 Symfony2.5,带有最新的 FOSElasticaBundle 等等。我正在对 bundle 的性能进行一些基
我有以下 JSON: { "users": [ {"id": "1", "name": "John Doe"}, {"id": "2", "name": "Bi
我有 3 个实体: 1. /** * @ORM\Entity */ class Product { /** * @ORM\Id * @ORM\Column(type="
我正在努力尝试找出如何使用单一表单编辑多个模型。 我有一个名为 Teams 的数据库表和一个与该表关联的学说实体。我创建了一个表单,如下所示: 我的团队现场集: class TeamFieldset
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我是一名优秀的程序员,十分优秀!