php-neo4j-ogm EntityManager GetRepository->FindAll() 返回空对象

php-neo4j-ogm EntityManager GetRepository->FindAll() retuns empty objects

我正在努力从 neo4j 数据库中读取数据。我使用 neo4j-php-ogm 库中提供的实体管理器。

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

i return 这是 json 格式,输出是:[{},{},{}]

这是我的员工实体 class:

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


}

我错过了什么?

这是因为 json_encode 不知道如何对 stdClass 以外的对象进行编码。

您现在可以让 class 实现 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
        ];
    }


}

与此同时,我将创建一个问题,以便您能够将从存储库返回的内容转换为数组而不是对象。

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