您可以擴展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,如果你有一個名爲ID「user_ID的」:
public function getUserId() { .. }
public function setUserId($id) { .. }
我接受這個答案,因爲經過大量閱讀後,我發現應該通過Hydrators完成對象羣體,並且定製Hydrator會是最好的方法。 此外,我最終結束了使用[Doctrine2](http://www.doctrine-project.org/),因爲它提供了一個擴展數據庫層,Hydrator包含提供了所需的功能。 –