2016-11-02 6 views
0

IDがデータベースに存在する場合はレコードを更新したいと思います。 IDが存在しない場合はレコードを作成します。これは私がidはない、それは、このような場合には、空として来て存在する場合としCakephp idが更新されている場合はelse

public function add() { 

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

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

     $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

どのidのテーブルが? AccountShopMetaのshop_idですか? –

+0

AccountShopMetaのIDは@ManoharKhadka – AyDee

答えて

0

私のコントローラで私のコードを追加機能で追加のforeach内の条件と、少なくとも上記の保存アクション以下:

foreach ($googleCategory as $key => $value) { 
    if(isset($value['id']) && !empty($value['id'])){ 
    $this->AccountShopMeta->id = $value['id']; 
    // your remaining code within loop here 
    // 
    } 
} 

ドゥidフォームにあなたのビュー(フォーム)が存在する場合、データを送信することを忘れないでください。

+0

です。一重引用符がありません空($ value ['id]) 'は空です($ value [' id '])' – tarikul05

+0

ああ、私はそれを訂正しました。 –

1

私はあなたが何を求めているのか理解すれば、これはあなたを助けます。作成を使用しないでください。指定された配列にidが存在する場合、自動的にそのIDに対してupdatationが実行されます。それ以外の場合は、新しい行が作成されます。

public function add() { 

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

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


    $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)); 
    } 
} 

} 
関連する問題