2016-10-31 62 views
0

我在我的控制器添加函數中使用cakephp 2,我想編輯數據如果id存在,如果不存在create。如果id存在,CakePHP添加函數編輯其他創建

這是我在附加功能代碼:

public function add() { 

    if(!$this->request->data){ 
     throw new NotFoundException(); 
    } 

    $googleCategory = $this->request->data; 

    foreach ($googleCategory as $key => $value) { 
     if(empty($value['category'])){ 
      unset($value); 
     } 

     $conditions = array (
      'AccountShopMeta.shop_id' => $value['shop_id'], 
      'AccountShopMeta.name' => $value['category'], 
      'AccountShopMeta.value' => $value['url_key'] 
     ); 

     if(!$this->AccountShopMeta->hasAny($conditions)){ 

      $this->AccountShopMeta->create(); 

      $data['shop_id'] = $value['shop_id']; 
      $data['name'] = $value['category']; 
      $data['value'] = $value['url_key']; 
      $data['tag'] = ''; 

      if($this->AccountShopMeta->save($data)){ 
       $account_shop_meta = $this->AccountShopMeta->read(); 
       $this->set($account_shop_meta); 
       $this->set('_serialize', array_keys($account_shop_meta)); 
      } 
     } 
    } 
} 

回答

0
public function add() { 

    if(!$this->request->data){ 
     throw new NotFoundException(); 
    } 

    $googleCategory = $this->request->data; 

    foreach ($googleCategory as $key => $value) { 
     if(empty($value['category'])){ 
      unset($value); 
     } 

     $conditions = array (
      'AccountShopMeta.shop_id' => $value['shop_id'], 
      'AccountShopMeta.name' => $value['category'], 
      'AccountShopMeta.value' => $value['url_key'] 
     ); 

     $accountShopMeta = $this ->AccountShopMeta->find('first', $conditions); 

     if(empty($accountShopMeta)) { 
      //ADD 
      $this->AccountShopMeta->create(); 
     } else { 
      //EDIT 
      $this->AccountShopMeta->id = $accountShopMeta['AccountShopMeta']['id']; 
     } 

     $data['shop_id'] = $value['shop_id']; 
     $data['name'] = $value['category']; 
     $data['value'] = $value['url_key']; 
     $data['tag'] = ''; 

     if($this->AccountShopMeta->save($data)) { 
      //This part shoud be out of loop (foreach) 
      $account_shop_meta = $this->AccountShopMeta->read(); 
      $this->set($account_shop_meta); 
      $this->set('_serialize', array_keys($account_shop_meta)); 
     } 
    } 

} 

更多信息Saving Your Data

相關問題