无法访问Doctrine 2实体的受保护属性

时间:2017-05-18 18:23:10

标签: symfony doctrine-orm

我在学说2中有一个具有以下属性的实体

/**
 * @var array
 *
 * @ORM\Column(name="space_data", type="json_array", nullable=true)
 */
protected $_spaceData = [];

我正在保存并检索此字段。当我转储这个实体时,填充正常,如下所示:

#_spaceData: array:22 [▼
    "id" => 1
    "name" => "Centro Cultural Niemeyer"
    "location" => array:2 [▶]
    "endereco" => null
    "En_CEP" => null
    "En_Nome_Logradouro" => null
    "En_Num" => null
    "En_Complemento" => null
    "En_Bairro" => null
    "En_Municipio" => null
    "En_Estado" => null
    "telefone1" => "(66) 8877-4411"
    "telefone2" => null
    "telefonePublico" => "(99) 6688-5544"
    "emailPrivado" => "acc@gmail.com"
    "emailPublico" => "acc@gmail.com"
    "acessibilidade" => "Sim"
    "acessibilidade_fisica" => "Banheiros adaptados;Elevador;Rampa de acesso"
    "site" => "http://www.centroculturalniemeyer.com.br"
    "googleplus" => null
    "facebook" => null
    "twitter" => null
  ]

但是当我尝试使用

在代码中访问它时
$entity->_spaceData

它返回null。我不熟悉Doc2,而且我目前正在这里维护一个项目。如何转储正确的值,但是当我尝试访问它时返回null?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

为了完整起见,我用示例创建了答案。

在OOP中,您无法访问私人和受保护的字段。要在您的实体中访问它们,您应该使用公开gettersgetters

<?php
class MyEntity
{
    /**
     * @var array
     *
     * @ORM\Column(name="space_data", type="json_array", nullable=true)
     */
    protected $_spaceData = [];

    /**
     * @return array
     */
    public function getSpaceData() {
        return $this->_spaceData;
    }

    /**
     * @param array $spaceData
     * @return $this
     */
    public function setSpaceData($spaceData) {
        $this->_spaceData = $spaceData;
        return $this;
    }
}