也许这只是我对此注释的误解,但它似乎没有按预期工作。
我有以下对象图
User
-> Company
-> Users
-> Groups
-> Permissions
正如你所看到的,会有一些递归。 JMS 很好地处理了这个问题,它不序列化其他用户的公司属性以及当前用户的属性。
不过,我希望连载停止并包括公司。
我已经尝试过了,期望一旦级别 $context->level = 2 它就会停止
<?php
namespace FinalConcept\TimeTracker\EntitiesBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation as JMS;
/**
* FinalConcept\TimeTracker\EntitiesBundle\Entity
*
* @ORM\Table(name="users")
* @ORM\Entity(repositoryClass="FinalConcept\TimeTracker\EntitiesBundle\Repository\UserRepository")
*/
class User implements UserInterface, \Serializable
{
/**
* @ORM\ManyToOne(targetEntity="company", inversedBy="users")
* @ORM\JoinColumn(name="company_id", referencedColumnName="id")
* @JMS\MaxDepth(depth=1)
*/
private $company;
}
然而,这种情况并非如此。即使单步执行代码也没有说明如何阻止这种情况。
如果我只能为特定路径(即 User.Company)调用它,我很高兴创建一个自定义处理程序
我还需要这个用于 User.Groups ,它具有下图
User
-> Groups
-> Permissions
-> Users
-> Groups
-> users ....
预先感谢您提供有关如何限制对象图序列化深度的任何帮助