2016-07-08 4 views
-3

レコードを更新し、テーブルに存在しないかどうかを確認したいが、チェックしても問題はないが、選択したレコードを更新することはできないすでに存在しているからです。照度データベースを使用して、行の更新を除いて更新されない場所

ここに私のコード

$app->post('/update_function', function($request, $response, $args) { 
$exists = $this->db->table('functions')->where('project_id', '=', $request->getParam('project_id')) 
             ->where('function_number', '=', $request->getParam('function_number')) 
             ->exists(); 

if(!$exists) { 
    $query = $this->db->table('functions') 
        ->where('function_id', '=', $request->getParam('function_id')) 
        ->update([ 
        'project_id' => $request->getParam('project_id'), 
        'function_number' => $request->getParam('function_number'), 
        'function_text' => $request->getParam('function_text') 
        ]); 
    if($query) { 
     echo "Function was updated"; 
    } 
}else { 
    echo "Can not update duplicate function number"; 
}       
}); 
+0

「自分のコードを修正する」という基本的な問題は仕事が必要です。コードを最小限の完全な検証可能な例に絞り込んでください。 – Ares

答えて

0

シンプルなソリューション

が存在し、使用しないでください、(最初の使用)

$record = $this->db->table('functions') 
        ->where('project_id', '=', $request->getParam('project_id')) 
        ->where('function_number', '=', $request->getParam('function_number')) 
        ->first(); 
if (is_null($record)) { //record does not exist } 
else { 
    $record->update([ 
     'project_id' => $request->getParam('project_id'), 
     'function_number' => $request->getParam('function_number'), 
     'function_text' => $request->getParam('function_text') 
    ]); 
    $record->save(); 
} 

これがない場合にのみ...一つのレコードを引いていることを前提としてい最初にgetで置き換えてすべてのレコードを繰り返し処理します。

関連する問題