您可以扩展 Zend\Stdlib\Hydrator\ClassMethods 并在此处进行所需的任何转换,假设这就是您的意思。
然后,您可以使用 mapField 从您的字段之一映射到正确的 id 字段名称。
namespace Application\Model;
use Zend\Stdlib\Hydrator\ClassMethods;
class MyHydrator extends ClassMethods
{
/**
* Extract values from an object
*
* @param object $object
* @return array
* @throws Exception\InvalidArgumentException
*/
public function extract($object)
{
$data = parent::extract($object);
$data = $this->mapField('id', 'user_id', $data);
return $data;
}
/**
* Map fields
*
* @param type $keyFrom
* @param type $keyTo
* @param array $array
* @return array
*/
protected function mapField($keyFrom, $keyTo, array $array)
{
$array[$keyTo] = $array[$keyFrom];
unset($array[$keyFrom]);
return $array;
}
}
或者,您可以为需要设置/获取的 id 字段创建一个 getter 和 setter,例如,如果您有一个名为 'user_id' 的 id:
public function getUserId() { .. }
public function setUserId($id) { .. }