我在表格中有下划线字段,如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);
答案 0 :(得分:1)
您确定所有数据库字段都有数据吗? 也许他们是空的,只是它不会返回任何价值
答案 1 :(得分:0)
您可以创建一个新的命名策略并将其分配给保湿器,而不是编写自己的保湿器。默认情况下,ClassMethods水化器使用Zend \ Stdlib \ Hydrator \ NamingStrategy \ UnderscoreNamingStrategy。您可以检查策略中的代码,并进行适当的更改,创建自己的自定义命名策略。确保您还创建了一个匹配它的界面。
然后您需要删除UnderscoreNamingStrategy,并按如下方式添加您自己的自定义:
$hydrator = new ClassMethods();
$hydrator->removeNamingStrategy('UnderscoreNamingStrategy');
$hydrator->addStrategy('CustomStrategy', 'CustomStrategyInterface');