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?