Обновление Laravel с использованием Query Builder - PullRequest
0 голосов
/ 13 июня 2018

Я работаю над проектом laravel и пытаюсь обновить запись с помощью построителя запросов, но она не работает, это функция, в которой я пытаюсь отредактировать запись в ней

public function editchecksave(Request $request)
{
    $id = $request->id;
    $username = $request->username;
    $attribute = $request->attribute;
    $value = $request->value;
    $op = $request->op;

    $result = DB::update('update radcheck set username = "?" , 
        attribute="?",value="?" ,op="?" where id = ?', 
        [$username,$attribute,$value,$op,$id]
    );

    if ($result)
    {
        return response()->json([ 'msg' => 'Updated Successfully' . $username]);
    }

    return response()->json([ 'msg' => 'Not Updated Successfully'. $value]);
}

это маршрут

 Route::get( 'radcheckedit', 'radcheckController@editchecksave' );

когда я не изменяю первый элемент в запросе на обновление, он не обновляется, но когда я изменяю первый элемент, он обновлялся успешно. Другими словами (когда я изменяю значение имени пользователя, он обновлялся успешно и когда я делаю этоне изменять имя пользователя, не обновляется, когда я помещаю атрибут в первый элемент запроса, он должен изменить его значение, чтобы выполнить обновление, поэтому пользователь должен изменить первое значение запроса, и это не хорошо, поскольку пользователь может не захотеть редактироватьэтот элемент)

это дает мне сообщение Не обновлено успешно

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Я считаю, что вам нужно изменить свою БД: Обновите реализацию, пожалуйста, проверьте этот ответ: DB :: update laravel 5 raw query

0 голосов
/ 13 июня 2018

Не следует помещать необработанный запрос в функцию update, для этого требуется массив значений для обновления.Вы можете написать свой запрос, используя встроенный построитель запросов:

$result = DB::table('radcheck')
    ->where('id', $id)
    ->update([
        'username' => $username,
        'attribute' => $attribute,
        'value' => $value,
        'op' => $op
    ]);

Или, что еще лучше, без необходимости извлекать переменные из запроса вручную:

$result = DB::table('radcheck')
    ->where('id', $id)
    ->update($request->only(['username', 'attribute', 'value', 'op']));

Это также сделает кодболее читабельно.

...