Symfony 4 - Не понимаю, как сериализовать сущность с помощью JMS Serializer - PullRequest
0 голосов
/ 11 декабря 2019

Я застрял в своем проекте Symfony 4. На самом деле у меня есть сущность User, которая реализует Сериализуемый и два serialize и unserialize (PHP) метода для сериализации моей сущности.

За исключением того, что в какой-то момент у меня есть проблема круговой ссылки. Я видел, что могу исправить эту проблему, используя «параметр глубины». И этот JMS Serializer легко с ним справился.

Итак, я установил JMS Serializer bundle .

Но после просмотра нескольких сайтов, несколько документов ',Я не понимаю, как мне нужно изменить свою сущность User, чтобы использовать сериализацию JMS вместо PHP и использовать глубину.

class User implements UserInterface, Serializable
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * Adresse email de l'utilisateur
     * @ORM\Column(type="string", length=180, unique=true)
     * @Assert\NotBlank()
     * @Assert\Email(message="Veuillez renseigner un email valide")
     */
    private $email;

    /**
     * Rôles de l'utilisateur
     * @ORM\Column(type="json")
     */
    private $roles = [];


    /**
     * Ordres de mission de l'utilisateur
     * @ORM\OneToMany(targetEntity="App\Entity\OrdreMission", mappedBy="user")
     * @MaxDepth(2)
     */
    private $ordreMissions;


    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Entreprise", inversedBy="users")
     * @ORM\JoinColumn(nullable=false)
     * @MaxDepth(2)
     */
    private $entreprise;

/**
 * String representation of object
 * @link http://php.net/manual/en/serializable.serialize.php
 * @return string the string representation of the object or null
 */
public function serialize()
{
    return serialize([
        $this->id,
        $this->email,
        $this->password,
    ]);
}

/**
 * Constructs the object
 * @link http://php.net/manual/en/serializable.unserialize.php
 * @param string $serialized <p>
 * The string representation of the object.
 * </p>
 * @return void
 */
public function unserialize($serialized)
{
    list (
        $this->id,
        $this->email,
        $this->password,
        ) = unserialize($serialized);
}

Я добавил @ MaxDepth (2) в моих атрибутах " ordreMission " и " entreprises ", и я хотел бы использовать JMS Serializer для сериализации моей сущности, а использовать параметр глубины .

Но я не понимаю, как это сделать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...