我之前问过一个关于如何使用 tablegateway 有效地进行插入\更新的问题,并在文档Zend\Stdlib\Hydrator\ClassMethods
中的这段代码中得到了通知:
public function saveAlbum(Album $album)
{
$data = array(
'artist' => $album->artist,
'title' => $album->title,
);
$id = (int)$album->id;
if ($id == 0) {
$this->tableGateway->insert($data);
} else {
if ($this->getAlbum($id)) {
$this->tableGateway->update($data, array('id' => $id));
} else {
throw new \Exception('Form id does not exist');
}
}
}
可以用以下代码替换:
saveAlbum(Album $album)
{
$hydrator = new ClassMethods(false);
$data = $hydrator->extract($album);
...
但是我发现使用$hydrator->extract($album);
它时返回一个空数组,这可能是什么原因?我对传递给函数var_dump()
的对象做了一个,它似乎是有效的。$album
我还需要做些什么才能使其正常工作吗?