php-neo4j-ogm EntityManager GetRepository->FindAll() перенастраивает пустые объекты

Я изо всех сил пытаюсь прочитать данные из neo4j db. Я использую EntityManager, предоставленный в библиотеке neo4j-php-ogm.

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

я возвращаю это в формате JSON и вывод: [{},{},{}]

это мой класс сущности Employee:

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


}

что мне не хватает?

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


}

А пока я создам проблему, чтобы вы могли преобразовывать ее в массив, а не в объект, возвращаемый из хранилища.

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

Другие вопросы по тегам