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
];
}
}
А пока я создам проблему, чтобы вы могли преобразовывать ее в массив, а не в объект, возвращаемый из хранилища.