2013-11-26 25 views
0

我有一个包含许多字段(id,label,reference,key_product,...)的产品表,key_product是一个加密值。ZF2 - 仅编辑数据的一部分

在产品型号我exchangeArray功能,除了正常的,当涉及到key_product我不喜欢这样:

public function exchangeArray($data){   
    $this->key_product = (isset($data['key_product'])) ? sh1($data['key_product']) : $this->key_product; 
    } 

在编辑我的产品数据,我显示key_product空的,所以如果用户输入一个值,那么它将被存储在数据库中。我的问题是,当用户没有输入值,我想保留在数据库中的旧值,除了当我水合数据,并且来到exchangeArray函数,它总是加密key_product值,所以我找到我的自我以相同的值加密两次。

我的问题是如何编辑产品的数据,而无需编辑key_product字段,如果没有输入key_product。 任何建议将是最受欢迎的。 Thankyou

回答

0

嗨,我认为你可以从productTable做到这一点。

public function updateProduct(Product $product) 
{ 
    $data = array (
     'id' => $product->id, 
     'label' => $product->label, 
     'reference' => $product->reference, 
     //... other 
    ); 

    if($product->key_product != null) { 
     $data['key_product'] = $product->key_product; 
    } 
    //else key_product w'll not be changed 

    $id = (int) $product->id; 
    $this->tableGateway->update($data, array('id' => $id)); 
} 

和你exchangeArray w'll变成了这个样子:

public function exchangeArray($data) 
{   
    $this->key_product = (isset($data['key_product'])) ? sh1($data['key_product']) : null; 
}