Symfony 4 хранит сущность в сеансе - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть многостраничная форма, которая собирает некоторые данные и затем сохраняет их в нескольких таблицах.Как правильно сохранить сущность в сеансе в Symfony 4?Я вижу документацию здесь , в которой говорится:

В Doctrine объект сущности должен "управляться" EntityManager, чтобы быть обновляемым.Объекты, сохраненные в сеансе, больше не управляются в следующем запросе.Это означает, что вам необходимо снова зарегистрировать эти объекты в EntityManager, если вы хотите изменить их или использовать как часть ссылок между другими объектами.Этого можно добиться, вызвав EntityManager # merge ().

и

Объекты, сериализованные в сеанс, обычно также содержат ссылки на другие объекты.Подумайте, пользовательский объект имеет ссылку на его статьи, группы, фотографии или много других различных объектов.Если вы сериализуете этот объект в сеанс, вы не захотите также сериализовать связанные сущности.Вот почему вы должны вызвать EntityManager # detach () для этого объекта или реализовать магический метод __sleep () для вашей сущности.

Нужно ли это делать с помощью symfony?Как бы я?

Возможно, лучше было бы задать вопрос - должен ли я даже использовать сущности с сеансами или хранить их в классе и просто загрузить всю информацию о классе в сущность в конце?

1 Ответ

0 голосов
/ 10 июня 2019

В зависимости от ваших потребностей это может быть применимо.

Одна из целей сохранения сущностей в сеансе - как упомянуто в документах - - это " Многоступенчатые формы".Использование сущности из сеанса в форме может привести к следующей ошибке:

сущность Ваша \ сущность передана вПоле выбора должно быть управляемым.Может быть, сохранить их в менеджере сущностей?


Вы можете прочитать этот SO вопрос об этой проблеме.

...