2017-07-11 8 views
1

私はneo4j dbからデータを読み取るのに苦労しています。私は、neo4j-php-ogmライブラリで提供されているentitymanagerを使用しています。php-neo4j-ogm EntityManager GetRepository-> FindAll()は空のオブジェクトを返します

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

私はJSON形式でこれを返すと、出力は次のとおりです。[{},{},{}]

これは私の従業員エンティティクラスである:私は

<?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; 
    } 


} 

何をしないのですか?

+0

どのようにデータをJSONに変換していますか?変換には問題があるかもしれません(3つのオブジェクトがあるが空であるため)。 –

+0

こんにちは、私は場所に変換がありません私は単にリポジトリのfindallメソッドの結果を返します。暗黙的な変換の方法はありますか? –

答えて

1

これは、json_encodeがstdClass以外のオブジェクトのエンコード方法を知らないためです。

あなたのクラスでは、JsonSerializableを実装し、直列化するプロパティを指定できます。あなたがではなく、配列に変換することが可能であろうように、私は問題を作成し、一方

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 
     ]; 
    } 


} 

は、私はそれを行う方法を示してテストを追加しましたリポジトリから返されるオブジェクト

+0

こんにちは、JsonSerializableの実装は私のために働いた。ありがとうございました。 –

関連する問題