Symfony 2.7にアップグレードして以来、関連付けられた配列の配列をシリアル化しようとすると、所与のグループ。それらは多対多の関連付けで設定されています(1つのグループには多くの連絡先があり、1つの連絡先には多くのグループ関連があります)。多対多の関連オブジェクトをシリアライズするときに「循環参照が検出されました」というエラーが発生しました
ここでは、2.7 upgrade postに従ってシリアル化グループを使用するためのガイドに従っていますが、まだエラーが発生しているようです。
$group = $this->getDoctrine()
->getRepository('TwbGroupsBundle:ContactGroup')
->find($id);
$groupContacts = $group->getContacts();
$encoder = new JsonEncoder();
$normalizer = new ObjectNormalizer();
$serializer = new Serializer(array($normalizer), array($encoder));
$json = $serializer->serialize($groupContacts, 'json', array(
'groups' => array('public')
));
$serializer->serialize()
を実行している、私は1つの循環参照の後CircularReferenceExceptionを取得:次のように、このための私のコントローラのコードは、現在あります。これまでのところ、私は私の連絡先エンティティは@Groupsの注釈で、そのように設定している:
/**
* Contact
*
* @ORM\Table(name="tblContacts")
* @ORM\Entity(repositoryClass="Twb\Bundle\ContactsBundle\Entity\Repository\ContactRepository")
*/
class Contact implements ContactInterface
{
/**
* @var string
*
* @ORM\Column(name="ContactName", type="string", length=50, nullable=true)
* @Groups({"public"})
*/
private $contactname;
/**
* @var integer
*
* @ORM\Column(name="ContactID", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
* @Groups({"public"})
*/
private $contactid;
/**
*
* @var ArrayCollection
* @ORM\ManyToMany(targetEntity="Twb\Bundle\GroupsBundle\Entity\ContactGroup", inversedBy="contacts")
* @ORM\JoinTable(name="tblContactsGroupsAssignments",
* joinColumns={@ORM\JoinColumn(name="contactId", referencedColumnName="ContactID")},
* inverseJoinColumns={@ORM\JoinColumn(name="contactGroupId", referencedColumnName="id")}
* )
*/
protected $contactGroups;
// ...getters/setters and so on
}
そして、私のCONTACTGROUPエンティティ:
/**
* ContactGroup
*
* @ORM\Table(name="tblContactsGroups")
* @ORM\Entity
*/
class ContactGroup
{
// ...
/**
*
* @var Contact
*
* @ORM\ManyToMany(targetEntity="Twb\Bundle\ContactsBundle\Entity\Contact", mappedBy="contactGroups")
*/
private $contacts;
// ...
}
私は真円度の問題を回避するためにここに欠けているものがあります?どうもありがとう。
http://jmsyst.com/bundles/JMSSerializerBundle – Jekis