ZF2-只编辑数据的一部分


ZF2 - Editing only one part of data

我有一个产品表,里面有很多字段(id、label、reference、key_product…),key_production是一个加密值。

我在产品模型中的exchangeArray函数是正常的,除了当涉及到密钥产品时,我确实喜欢:

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

在编辑我的产品数据时,我将keyproduct显示为空,所以如果用户输入一个值,那么它将存储在数据库中。我的问题是,当用户不输入值时,我希望将旧值保留在数据库中,只是当我对数据进行水合处理时,使用exchangeArray函数时,它总是对key_product值进行加密,所以我发现我自己的同一值被加密了两次。

我的问题是,如果没有输入key_product,如何在不编辑key_production字段的情况下编辑产品的数据。欢迎提出任何建议。感谢

嗨,我想你可以从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会变成这样:

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