duanlinpi0265 2014-01-13 10:26
浏览 38

json编码doctrine对象中的对象数组

I have following doctrine model..

House doctrine entity

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

Following is Room entity

// 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 }
}

Problem ..

When I fetch one House entity using doctrine query, it fetches along with rooms objects. But, if I encoded them with json_encode() the values for rooms seen emtpy.

*Query.. *

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

If I loop through the result set and print the individual item (including Room object within House) all properties print well. I tried with Zend\Json\Json::encode() as well. Still the rooms property is empty.

How can I 'json encode' to get the object array within the object to be serialized? Whats the trick?

  • 写回答

1条回答 默认 最新

  • douzhu6149 2014-03-18 15:46
    关注

    I found the solution: 'rooms' => $this->GetRooms()->toArray() That will work, because we need an Array, not an Array collection

    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘