对原则对象中的对象数组进行 JSON 编码



我有以下学说模型。

众议院学说实体

// Below are not my real object. These are example similar to my originals
// Doctrine entity
class House implements JsonSerializable {
  // Doctrine properties
  protected $id;  // doctrine id field
  protected $rooms; // rooms : one-to-many relation to Room doctrine entity.
  // serializer
  public function jsonSerialize() {
    return [
      'id' => $this->GetId(),
      'rooms' => $this->GetRooms(),
    ];
  }
  // Getters & setters.
  public GetId() { return $this->id; }
  public SetId($id) { $this->id = $id }
  public GetRooms() { return $this->rooms; }
  public SetRooms($rooms) { $this->rooms = $rooms; }
}

以下是房间实体

// Doctrine entity
class Room implements JsonSerializable {
  protected $id; // doctrine id field
  // serializer
  public function jsonSerialize() {
    return [
      'id' => $this->GetId(),
    ];
  }
  // Getters & setters.
  public GetId() { return $this->id; }
  public SetId($id) { $this->id = $id }
}

问题。。

当我使用学说查询获取一个House实体时,它会与rooms对象一起获取。但是,如果我用json_encode()编码它们,则看到rooms emtpy 的值。

*查询.. *

$qb->select('h', 'r')
  ->from('House', 'h')
  ->where('id = ?1')
  ->leftJoin('h.rooms', 'r')
  ->setParameter('1', $houseId);

如果我循环遍历结果集并打印单个项目(包括House中的Room对象),则所有属性都打印良好。我也尝试过ZendJsonJson::encode()rooms属性仍然是空的。

如何"json 编码"以获取要序列化的对象中的对象数组?有什么诀窍?

我找到了解决方案:'rooms' => $this->GetRooms()->toArray()这将起作用,因为我们需要一个数组,而不是一个数组集合。

相关内容

  • 没有找到相关文章

最新更新