Zendramework 2 ClassMethod Hydrator

时间:2014-03-05 20:08:21

标签: zend-framework2 class-method

我在表格中有下划线字段,如display_name我使用ClassMethod水槽将下划线转换为驼峰情况但是它不起作用(电子邮件属性有效,但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);

2 个答案:

答案 0 :(得分:1)

您确定所有数据库字段都有数据吗? 也许他们是空的,只是它不会返回任何价值

答案 1 :(得分:0)

您可以创建一个新的命名策略并将其分配给保湿器,而不是编写自己的保湿器。默认情况下,ClassMethods水化器使用Zend \ Stdlib \ Hydrator \ NamingStrategy \ UnderscoreNamingStrategy。您可以检查策略中的代码,并进行适当的更改,创建自己的自定义命名策略。确保您还创建了一个匹配它的界面。

然后您需要删除UnderscoreNamingStrategy,并按如下方式添加您自己的自定义:

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