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
];
}
}
与此同时,我将创建一个问题,以便您能够将从存储库返回的内容转换为数组而不是对象。
我正在努力从 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
];
}
}
与此同时,我将创建一个问题,以便您能够将从存储库返回的内容转换为数组而不是对象。