ZF2 - 仅编辑一部分数据

时间:2013-11-26 12:10:35

标签: php zend-framework2 editing

我有一个包含许多字段的产品表(id,label,reference,key_product,...),key_product是加密值。

我的产品型号中的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值,所以我找到了我的具有相同值的self加密两次。

我的问题是如果没有输入key_product,如何编辑产品的数据而不编辑key_product字段。 任何建议都将受到欢迎。 三江源

1 个答案:

答案 0 :(得分: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会变成这样:

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