2014-03-05 25 views
0

我在我的表中有下劃線字段像display_name我使用ClassMethod hydrator轉換下劃線到駱駝案件,但它不起作用,(電子郵件屬性工作,但displayName不起作用)這是我的代碼:Zendramework 2 ClassMethod Hydrator

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

請別人幫我 – Dante

+0

如果水化器不工作,你想你可以做一個自己的方式,只是執行'Zend \ Stdlib \ Hydrator \ HydratorInterface'我有類方法的麻煩,因爲我的實體從一個抽象的實體擴展,並有幾個父類中的類,我不想被水合 – SmasherHell

回答

1

您確定所有的數據庫字段都有數據嗎? 也許他們是空的,只是它不返回任何閥值

+1

是的,你是對的,數據庫didn'沒有任何價值:D – Dante

0

您可以創建一個新的命名策略並將其分配給水化器,而不是編寫自己的水化器。 ClassMethods hydrator默認使用Zend \ Stdlib \ Hydrator \ NamingStrategy \ UnderscoreNamingStrategy。您可以檢查策略中的代碼,並進行適當的更改,創建您自己的自定義命名策略。確保你也創建一個接口來匹配它。

然後您需要刪除的UnderscoreNamingStrategy,並添加自己的自定義一個如下:

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