相关疑难解决方法(0)

避免使用Doctrine实体和JMSserializer进行递归

我正在使用Symfony2,Doctrine,FOSRestBundle和JMSSerializer构建REST API.

我遇到的问题是在序列化我的实体时,序列化程序会引入任何相关实体.例如,对于作为董事会一部分的故事的一部分的任务,所以在序列化任务时,我得到的输出包括包含董事会的故事,其中包括董事会上的所有其他故事.

有没有一种简单的方法来限制它,只是包含foreignIds?

php symfony doctrine-orm fosuserbundle

17
推荐指数
3
解决办法
1万
查看次数

使用Symfony/FosRestBundle/JMS Serializer实现现场白名单的建议

我目前正在学习如何使用Symfony 3(带有FOSRestBundle)和JMS Serializer来实现一个相对简单的API.我最近一直在尝试实现作为消费客户端指定哪些字段应该在响应中返回的能力(请求的实体和关系中的两个字段).例如;

  • /posts没有包含查询字符串将返回所有Post实体属性(例如title,body,posted_at等)但没有关系.
  • /posts?fields[]=id&fields[]=title只会返回帖子的ID和标题(但同样没有关系)
  • /posts?include[]=comment将包括上述但与Comment关系(及其所有属性)
  • /posts?include[]=comment&include[]=comment.author 将如上所述返回,但也包括每个评论中的作者

尝试实施这是一个明智的事情吗?我最近对此进行了大量的研究,我看不出我可以1)限制单个字段的检索,2)只有在明确要求时才返回相关实体.

我已经有了这个概念的初步播放,但是即使确保我的存储库只返回Post实体(即没有注释),JMS Serializer似乎触发了所有相关实体的延迟加载,我似乎无法阻止它.我已经看到了一些链接,例如这个例子但是修复似乎不起作用(例如在该链接中,$object->__load()在原始代码中从未到达注释掉的调用.

我已经使用JMSSerializer的Group功能实现了一个基于关系的示例,但是当我理想情况下能够构建一个Doctrine Querybuilder实例,动态添加andWhere()调用并让序列化程序只返回那些确切的数据而不加载时,我觉得很奇怪.在人际关系中

我为此撒谎而道歉,但我已经坚持了一段时间,我很感激任何输入!谢谢.

php symfony doctrine-orm jmsserializerbundle

5
推荐指数
1
解决办法
571
查看次数