2016-10-25 21 views
0

こんにちは私は入力フィールドを表示する編集フォームを持っています。これらのフィールドにデータベースのデータを表示しています。また、新しいフィールドを追加するボタンもあります。私は複数のフィールドを編集することができますが、問題は、レコードの既存のIDがない場合、データベースに新しいフィールドを作成する方法です。 注:新しいフィールドについては、0 idを送信していますので、cakephpに新しいフィールドがあることを確認できます。Cakephp IDがデータベースに存在しない場合、複数のレコードを更新または新規作成する

foreach ($exp as $k => $v) { 
    $dat[$k]["prp_id"] = $prpid; 
    $dat[$k]["exp_company"] = $v['company']; 
    $dat[$k]["position"] = $v['position']; 
    $dat[$k]["exp_id"] = $v['exp_id']; 
} 

$this->Experience->saveAll($dat, array('conditions' => array('exp_id' => $v['exp_id']))); 

これはすべてのフィールドを更新しています。 Btwなぜ私はここにいるので正しく動作しているのかわからない$v['exp_id']ループの外にあるので値が1つだけ送信されていますが、それは完全に機能しています。ですから、私は2つの問題があります。 exp_id0である場合、新しいレコードを作成し、2番目の理由は、このコードがレコードの更新に適している理由です。

答えて

0

これを試してみてください:

foreach ($exp as $k => $v) { 
    $dat[$k]["prp_id"] = $prpid; 
    $dat[$k]["exp_company"] = $v['company']; 
    $dat[$k]["position"] = $v['position']; 

    if ($v['exp_id'] != 0) { 
    $dat[$k]["exp_id"] = $v['exp_id']; 
    } 
} 

$this->Experience->saveAll($dat); 
+0

そのがそれを更新していません。それは新しいレコードを作成します – hellosheikh

+0

私は$ dat配列のデバッグ結果を見ることができます..あなたがforeachループ内でその条件をチェックする必要があるかどうかを見たいですか? –

+0

更新された答えを参照してください.. –

関連する問題