たぶん、この注釈に対する私の誤解だけかもしれませんが、期待どおりに機能しません。
次のオブジェクトグラフがあります
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 ....
オブジェクトグラフのシリアル化の深さを制限する方法について、事前に感謝します