Мой массив объектов не десериализуется при загрузке сущности из базы данных.
У меня есть объект не-сущности с именем NetworkAddress
. Затем в моей сущности Foo
у меня есть массив этих сетевых адресов.
Сетевые адреса сохраняются как сериализованные PHP в базе данных, но когда я загружаю объект, данные для сети адреса не добавляются.
/**
* @ORM\Entity(repositoryClass="App\Repository\FooRepository")
*/
class Foo implements \Serializable
{
...
/**
* @var NetworkAddress[]
* @Groups({"main", "initialized"})
* @ORM\Column(type="array")
*/
private array $addresses;
...
Поэтому, когда я загружаю свой $foo
объект, $foo->getAddresses()
возвращает массив пустых NetworkAddresses
, хотя необработанные значения базы данных таковы:
a : 1: {я: 0; C: 22: "App \ DTO \ NetworkAddress": 41: {а: 2: {я: 0; s: 9: "127.0.0.1"; я:;: 1 с 4: "5000";}}}
Я использую команду basi c ->findOneBy()
в своем репо для извлечения объекта.
Сериализация, кажется, работает, но есть ли что-то особенное для десериализации объекта, хранящегося в виде массива?
Вот мой класс NetworkAddress, без методов получения / установки
class NetworkAddress implements \Serializable
{
/**
* @Groups({"main", "initialized"})
* @Assert\Regex(
* pattern="/^[0-9A-z\.-]+$/",
* match=true,
* message="Invalid host format."
* )
*/
private string $host = 'localhost';
/**
* Intentionally left untyped so we can accept int or string for port number.
*
* @Groups({"main", "initialized"})
* @Assert\NotBlank(message = "Port should not be empty.")
* @Assert\Range(min="1", max="65535", invalidMessage="Invalid port.")
*/
private $port;