Zend framework2 Zendramework 2类方法水合器

Zend framework2 Zendramework 2类方法水合器,zend-framework2,class-method,Zend Framework2,Class Method,我的表中有下划线字段,如display\u name。我使用ClassMethod或将下划线转换为camel大小写,但不起作用(email属性起作用,但displayName不起作用)。这是我的代码: class UserEntity { protected $email; protected $displayName; public function getDisplayName() { return $this->displayName; } public funct

我的表中有下划线字段,如display\u name。我使用ClassMethod或将下划线转换为camel大小写,但不起作用(email属性起作用,但displayName不起作用)。这是我的代码:

class UserEntity 
{

protected $email;
protected $displayName;


public function getDisplayName()
{
    return $this->displayName;
}

public function setDisplayName($displayName)
{
    $this->displayName = $displayName;
    return $this;
}

public function getEmail()
{
    return $this->email;
}

public function setEmail($email)
{
    $this->email = $email;
}

}

$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$UserEntity = new \UserManagement\Model\UserEntity;
$hydrator = new \Zend\Stdlib\Hydrator\ClassMethods;
$resultSet = new \Zend\Db\ResultSet\HydratingResultSet($hydrator,$UserEntity);
$tableGateway = new \Zend\Db\TableGateway\TableGateway('user',$dbAdapter,null,$resultSet);
$table = new \UserManagement\Model\UserTable($tableGateway);

您确定所有数据库字段都有数据吗?
也许它们是空的,只是它不返回任何值,而不是编写您自己的水合器,您可以创建一个新的命名策略并将其分配给水合器。默认情况下,ClassMethods Hyderator使用Zend\Stdlib\Hyderator\NamingStrategy\下划线EnamingStrategy。您可以检查策略中的代码,并进行适当的更改,创建自己的自定义命名策略。确保您还创建了一个与之匹配的接口

然后,您需要删除下划线策略,并添加自己的自定义策略,如下所示:

$hydrator = new ClassMethods();
$hydrator->removeNamingStrategy('UnderscoreNamingStrategy');
$hydrator->addStrategy('CustomStrategy', 'CustomStrategyInterface');

请有人帮助我如果水合器不能按您希望的方式工作,您可以自己制作一个,只需实现
Zend\Stdlib\hydrator\HydratorInterface
我在ClassMethod方面遇到了一些问题,因为我的实体是从抽象实体扩展而来的,并且在父级中有几个类我不想水合是的,你说得对,数据库没有任何值:D