symfony:如何遍历Doctrine对象的字段

时间:2011-01-08 06:17:39

标签: symfony1 doctrine

我需要遍历自定义验证器中的字段列表,以将值与已存储在数据库中的值进行比较。

我的代码在这里:

$healthUser = PersonTable::getInstance->getHealthUser(trim($values['nhi']));

if ($healthUser->getNHI() == trim($values['nhi']) &&
$healthUser->getName() != trim($values['name'])){

//Also loop through all fields and show differences
foreach (array('suite','hnr_street','suburb','city','postcode','postal_address') 
         as $field){

     if ($value[$field] != $healthUser->getFieldName()){
//How do I get the field name from $field?--^^^^^^^^^^


         $errorSchemaLocal->addError(new sfValidatorError($this, 
                                     'fieldIsDifferent', $healthUser->getFieldName()),
                                     $field);
     }
 }

所以基本上我需要从$ field中的字段名称创建getter函数。

知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

Doctrine记录实现了ArrayAccess接口。您只需将记录作为数组访问:

if ($value[$field] != $healthUser[$field]) {
  // ...
}

您还可以使用sfInflector构造一个getter名称:

$getField = sprintf('get%s'), ucfirst(sfInflector::cammelize($field)));
if ($value[$field] != $healthUser->$getField()) {
  // ...
}