2016-07-08 13 views
-3

Я хотел бы обновить запись и проверить, не существует ли в таблице, но проблема в том, что если я проверяю существование, это сработало, но я не могу даже обновить одну запись, которую я выбрал потому что он уже существует.Обновление, если не существует, кроме обновления строки, с использованием базы данных Illuminate

Вот мой код

$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.

 Смежные вопросы

  • Нет связанных вопросов^_^