2017-07-11 1 views
1

J'ai du mal à lire les données d'un neo4j db. J'utilise le gestionnaire d'entités fourni dans la bibliothèque neo4j-php-ogm.php-neo4j-ogm EntityManager GetRepository-> FindAll() rétablit les objets vides

 $employeesRepository = $this->entityManager ->getRepository(Employee::class); 
     $employees = $employeesRepository->findAll(); 
     return $employees; 

i retourner ce au format JSON et la sortie est: [{},{},{}]

ceci est ma classe d'entité Employé:

<?php 


use GraphAware\Neo4j\OGM\Annotations as OGM; 
/** 
* @OGM\Node(label="Employee") 
*/ 

class Employee{ 
    /** 
    * @OGM\GraphId() 
    * @var int 
    */ 
    protected $id; 


    /** 
    * @OGM\Property(type="string") 
    * @var string 
    */ 
    protected $last_name; 


    /** 
    * @OGM\Property(type="string") 
    * @var string 
    * 
    */ 
    protected $first_name; 

    /** 
    * @return int 
    */ 
    public function getid(){ 
     return $this->id; 
    } 

    /** 
    * @return string 
    */ 
    public function getlast_name(){ 
     return $this->last_name; 
    } 

    /** 
    * @param string last_name 
    */  
    public function setlast_name($param){ 
     $this->last_name = $param; 
    } 

    /** 
    * @return string 
    */  
    public function getfirst_name() { 
     return $this->first_name; 
    } 

    /** 
    * @param string first_name 
    */  
    public function setfirst_name($param) { 
     $this->first_name = $param; 
    } 


} 

ce que je suis absent?

+0

Comment êtes-vous convertir les données en JSON? Il peut y avoir un problème dans la coversion (parce qu'il y a trois objets mais vides). –

+0

salut, je n'ai pas de conversion en place je retourne simplement le résultat de la méthode findall sur le référentiel. Y a-t-il un moyen pour une conversion implicite? –

Répondre

1

Cela est dû au fait que json_encode ne sait pas comment coder les objets autres que stdClass.

Vous pouvez pour le moment faire en sorte que votre classe implémente JsonSerializable et spécifier les propriétés qui doivent être sérialisées.

J'ai ajouté un test qui montre comment le faire:

https://github.com/graphaware/neo4j-php-ogm/commit/b013c3c2717cb04af0b0c3ab8a770b207d06e5a0

class TestUser implements \JsonSerializable 
{ 
    /** 
    * @OGM\GraphId() 
    * 
    * @var int 
    */ 
    protected $id; 

    /** 
    * @OGM\Property() 
    * 
    * @var string 
    */ 
    protected $name; 

    public function __construct($name) 
    { 
     $this->sponsoredChildren = new Collection(); 
     $this->name = $name; 
    } 

    /** 
    * @return int 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * @return string 
    */ 
    public function getName() 
    { 
     return $this->name; 
    } 

    /** 
    * @param string $name 
    */ 
    public function setName($name) 
    { 
     $this->name = $name; 
    } 

    public function jsonSerialize() 
    { 
     return [ 
      'id' => $this->id, 
      'name' => $this->name 
     ]; 
    } 


} 

En attendant, je vais créer un problème pour que vous seriez en mesure de convertir en un tableau plutôt que de un objet renvoyé par le référentiel.

https://github.com/graphaware/neo4j-php-ogm/issues/148

+0

salut, l'implémentation de la JsonSerializable a fonctionné pour moi. Je vous remercie. –