【问题标题】:Entity getter different situation实体吸气剂不同的情况
【发布时间】:2015-06-20 11:42:41
【问题描述】:

我有一个 Symfony2/AngularJS 应用程序并使用 FOSRestBundle 和 JMS Serializer Bundle。 对于普通实体,一切都很好,但是在我的一个包含消息集合(主题实体)的实体中,我需要在不同情况下返回消息子集。 例如,对于主题实体所有者,我想为消息所有者返回主题的所有消息,我只想返回与消息所有者一起发布的消息,而对于其他用户,我不想返回任何消息,但他们可以发布关于主题的消息。

我不确定在哪里实施。在主题实体中或在控制器中或...

【问题讨论】:

  • 通常用于此类任务的自定义服务和存储库类..
  • 我找到了这个,但我不确定在哪里使用它:doctrine-orm.readthedocs.org/en/latest/reference/…
  • Criteria 在你想通过简单的条件获取集合元素时非常有用。但它不支持连接。您可以简单地将其放入实体类中,例如:public function getMessages() { $criteria = Criteria::create()->where(Criteria::expr()->eq('deleted', false)); return $this->messages->matching($criteria); }

标签: angularjs symfony doctrine-orm fosrestbundle jmsserializerbundle


【解决方案1】:

简短的回答是:在控制器中。

长版: 您有一个包含消息集合的主题实体并不意味着您不能只使用消息实体。因此,如果您不需要整个主题,那么您也不应该使用它。而是直接在控制器中使用(数组)消息实体。您可以使用findBy() or findOneBy() 函数检索您需要的消息。

【讨论】:

  • 另一种可能性是你给你的用户实体也提供了一个消息集合。然后,此集合必须包含该用户编写的所有消息。您还可以为 User 实体提供两个消息集合:已接收消息和已发送消息。它是您的应用程序 :-) 最后一个想法:您还可以创建其他实体。例如实体 MessageByUserList。我认为这个实体的名称足以告诉你:-)
猜你喜欢
  • 2021-08-31
  • 1970-01-01
  • 2018-11-16
  • 2018-04-05
  • 2019-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多